Hoofdcategorieën
Topicacties

[ruby on rails] wie gebruikt het?

Pagina: 1 2 3 4 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 last

Reageer Nieuw Topic
Even een kort vraagje tussendoor, ik heb een simpele user-controller waarmee ik users kan aanmaken, bewerken en verwijderen.
Bij het aanmaken is een een password verplicht, die wordt gehasht en in de db gezet.
Bij het bewerken gaat het echter mis. Je moet dan een nieuwe wachtwoord invoeren, doe je dat niet krijg je de error dat het verplicht is (logisch), terwijl je soms gewoon geen nieuw wachtwoord wil opgeven en het oude behouden.
Dus hoe zorg ik dat als er geen wachtwoord opgegeven word die eigenschap gewoon overgeslagen word?
Even wat relevante code:

De update-functie uit de controller:
code:
1
2
3
4
5
6
7
8
def update
    @user = User.find(params[:id])
    if @user.update_attributes(params[:user])
       flash[:notice] = 'User was successfully updated.'
       redirect_to :action => 'show', :id => @user
    else
       render :action => 'edit'
    end
end

De relevante code uit m'n model (plain_password is het password zoals die uit de form-submit komt):
code:
1
2
3
4
5
6
7
8
9
10
11
attr_accessor :plain_password
attr_accessible :username, :plain_password
validates_uniqueness_of :username
validates_presence_of   :username, :plain_password
def before_create
    self.md5_password = User.hash_password(self.plain_password)
    self.registration_date = Time.now
end
def before_update
    self.md5_password = User.hash_password(self.plain_password)
    self.registration_date = Time.now
end

Ik hoop dat het een beetje duidelijk is...
 
Webdeveloper

quote:
Via het if attribuut van een validatie, kan je aangeven wanneer je een validatie wilt uitvoeren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class User < ActiveRecord::Base
  validates_presence_of :password, :if => :validate_password?
  # OF
  validates_presence_of :password, :on => :create

  validates_confirmation_of :password, :if => :validate_password?

  def password=(password)
    write_attribute(:password, password)
    @new_password = true unless password.blank?
  end

  def validate_password?
    @new_password or new_record?
  end
end

Op deze manier kan je dus controleren of iemand een wachtwoord ingevoerd heeft bij het bewerken van een record. Indien dit het geval is, controlleer je de aanwezigheid. Bij validates_presence is dat wat onzin, je zegt immers dat hij altijd aanwezig moet zijn, behalve als hij niet aanwezig moet zijn. Dit kan je beter zeggen in de 2e presence regel, daarbij controleer je alleen de aanwezigheid bij het aanmaken van het record.

Wil je gaan werken met andere validaties, zoals confirmation, dan zal je wel een constructie met if moeten gebruiken.
quote:
Flydesign.nl schreef op donderdag 28 december 2006 @ 10:37:
[...]


Via het if attribuut van een validatie, kan je aangeven wanneer je een validatie wilt uitvoeren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class User < ActiveRecord::Base
  validates_presence_of :password, :if => :validate_password?
  # OF
  validates_presence_of :password, :on => :create

  validates_confirmation_of :password, :if => :validate_password?

  def password=(password)
    write_attribute(:password, password)
    @new_password = true unless password.blank?
  end

  def validate_password?
    @new_password or new_record?
  end
end

Op deze manier kan je dus controleren of iemand een wachtwoord ingevoerd heeft bij het bewerken van een record. Indien dit het geval is, controlleer je de aanwezigheid. Bij validates_presence is dat wat onzin, je zegt immers dat hij altijd aanwezig moet zijn, behalve als hij niet aanwezig moet zijn. Dit kan je beter zeggen in de 2e presence regel, daarbij controleer je alleen de aanwezigheid bij het aanmaken van het record.

Wil je gaan werken met andere validaties, zoals confirmation, dan zal je wel een constructie met if moeten gebruiken.
Hartelijk dank :) Ik verbaas me toch elke keer weer over de simpelheid. Bij rails is het eigenlijk altijd zo dat je te moeilijk denkt als je er niet uitkomt _/-\o_

DRAFTER86 wijzigde dit bericht 28-12-2006 13:43 (52%)

 
Nog een vraagje, ik gebruik ajax om een html-tabel te updaten. In de tabel staat een lijst met items. In een dropdown heb ik een lijst met data. Kies je een andere datum moet de lijst geupdate worden.
Dit doe ik met "observe_field", dit gaat helemaal goed zolang ik een frequency instel. Wat ik echter zou willen is dat hij gewoon op een onchange event reageert, en eigenlijk ook op een onload om bij het laden van een pagina de tabel te vullen. Dus dan gebruik ik de volgende code (even zonder de onload om het niet ingewikkeld te maken ;)):
code:
1
2
3
4
5
6
<%= observe_field(:search_days,
                 :frequency => 0,
                 :on => "changed",
                 :update => :list,
                 :with => 'num_days',
                 :url => { :action => :ajax}) 
%>

Edit:
Hmm ik heb de fout gevonden, je moet de frequency niet opgeven, hoewel in de api-doc toch echt staat:
quote:
:frequency: The frequency (in seconds) at which changes to this field will be detected. Not setting this option at all or to a value equal to or less than zero will use event based observation instead of time based observation.

DRAFTER86 wijzigde dit bericht 30-12-2006 11:57 (50%)

 
Webdeveloper

Precies, daar staat dus dat je geen frequentie moet opgeven als je wilt dat het observen via events gaat: wat jij dus wilt :)

Verder zou een ajax request naar aanleiding van een onload event overbodig moeten zijn, dan had je de gegevens die je via ajax wilt ophalen net zo goed met de normale request mee kunnen geven. Als je weet welke waarde de select box in het begin heeft, kan je ook de tabel vullen. Partials kunnen je daarbij erg goed helpen.
quote:
Flydesign.nl schreef op zaterdag 30 december 2006 @ 13:06:
Precies, daar staat dus dat je geen frequentie moet opgeven als je wilt dat het observen via events gaat: wat jij dus wilt :)

Verder zou een ajax request naar aanleiding van een onload event overbodig moeten zijn, dan had je de gegevens die je via ajax wilt ophalen net zo goed met de normale request mee kunnen geven. Als je weet welke waarde de select box in het begin heeft, kan je ook de tabel vullen. Partials kunnen je daarbij erg goed helpen.
Duidelijk, maar er staat toch echt:
quote:
Not setting this option at all or to a value equal to or less than zero will use event based observation instead of time based observation.
Dus: Het niet toekennen van een waarde of van een waarde gelijk aan of kleiner dan nul heeft als gevolg dat er event-gebaseerde observatie gebruikt word...
 
Webdeveloper

quote:
DRAFTER86 schreef op zaterdag 30 december 2006 @ 13:50:
[...]


Duidelijk, maar er staat toch echt:

[...]

Dus: Het niet toekennen van een waarde of van een waarde gelijk aan of kleiner dan nul heeft als gevolg dat er event-gebaseerde observatie gebruikt word...

code:
1
2
3
4
5
6
def observe_field(field_id, options = {})
  if options[:frequency] && options[:frequency] > 0
    build_observer('Form.Element.Observer', field_id, options)
  else
     build_observer('Form.Element.EventObserver', field_id, options)
  end
end

Dat zou het inderdaad moeten doen zoals het in de handleiding staat. Je zou eens in je html kunnen kijken of hij ook een EventObserver aanmaakt als je de frequentie gelijk aan 0 maakt.

Dit is overigens edge code, dus het zou kunnen dat je te maken hebt met een 'ouder' typefoutje.
Wederom een KICK!

Modbreak:
Doe's niet... Als er iets te melden is wordt er vanzelf gepost...

RobIII wijzigde dit bericht 15-01-2007 18:52 (66%)

Rugby ...

Waarom :/

Doe dan een http://gathering.tweakers.net/global/templates/tweakers/images/icons/icon_hand.gif

RobIII wijzigde dit bericht 15-01-2007 18:58 (132%)

... is first and foremost, a state of mind, a spirit

Berichten: 8.345
Reg. datum: 23 februari 2002

Maffe vraag misschien, maar hoe geef ik de parse- en rendering tijd van een pagina op die pagina weer? Rails lijkt er geen fatsoenlijke functies voor te hebben, terwijl in log/development.log wel nette entries staan (iets als "completed in... | DB ... | rendering ..."). De docs en google leveren daar vrij weinig informatie over, weet iemand hoe het moet? :)
 
Als het puur om de duur van de queries gaat kan je misschien iets met deze plugin.
Berichten: 8.345
Reg. datum: 23 februari 2002

Helaas werkt die niet met components, maar bedankt! :)
 
Voor de ontwikkelaars die op Windows werken:

Op mijn werk heb ik het genot te werken onder OsX, de ideale Rails ontwikkelomgeving, mede door de fantastische editor TextMate.

Echter thuis ben ik nog altijd aangewezen op het Windows platform. Na maanden, gefrustreerd, met RadRails te hebben gewerkt heb ik nu InType ontdekt. Een verademing!
Webdeveloper

quote:
G33rt schreef op dinsdag 16 januari 2007 @ 22:25:
Helaas werkt die niet met components, maar bedankt! :)
Misschien dat RailsBench iets voor je is?

http://railsbench.rubyforge.org/
Absolution
Berichten: 547
Reg. datum: 28 november 2001

2nd edition van Agile Web Development with Ruby on Rails is alweer uit in Nederland, binnenkort even aanschaffen en serieus met ruby aan de slag!

You are not your post count. You are not your fps. You are not your screen resolution. You are not a beautiful and unique WON ID. You are the all singing, all dancing, crap of the internet.

Berichten: 34
Reg. datum: 06 februari 2005

te halen bij selexis/donner?
 
Absolution
Berichten: 547
Reg. datum: 28 november 2001

Jup, in Rotterdam hadden ze er iig genoeg :)

You are not your post count. You are not your fps. You are not your screen resolution. You are not a beautiful and unique WON ID. You are the all singing, all dancing, crap of the internet.

Berichten: 34
Reg. datum: 06 februari 2005

ok, dan ga ik morgen even dat boek halen. Als het goed is heb ik ook binnenkort een workshop bij Finalist IT
 
Tweeëntwing februari is er weer een heuse Rails- Coffee Meeting in A'dam!

SynchroSteve wijzigde dit bericht 26-01-2007 16:56 (23%)

Berichten: 1.678
Reg. datum: 10 december 2000

Een korte vraag van mijn kant: ik probeer met mijn geringe programmeerervaring de oefeningen van Agile Webdevelopment with Rails te maken, maar heb het idee dat het echt een ongelooflijk gevoelige taal is qua tikfouten en interpunctie. Dit is al de 2e keer dat ik een half uur zoek naar een speld in de spreekwoordelijke hooiberg.

Ben ik de enige hierin?

Blijkbaar wel. Ik heb het zelfde stuk nog eens overgetikt, maar nu heb ik het niet meer :X

DiedX wijzigde dit bericht 04-02-2007 22:24 (12%)

gek op Mac

Berichten: 84
Reg. datum: 07 september 2006

Ook ik ben de afgelopen weken flink met RoR aan de slag gegaan. Het zijn o.a die kleine dingen (zoals in de validatie oplossing van Flydesign.nl) die het ontwikkelen van je applicatie versnellen. Je moet het dan natuurlijk nog wel even weten.

Verder ga ik aan de slag met de combinatie Ruby en Gruff. Met Gruff kan je mooie statistieken in de vorm van pie-charts etc. laten genereren. Dit is ook een essentieel onderdeel van de applicatie waar ik aan werk.

Zelf ontwikkel ik op een Mac m.b.v. Locomotive...erg prettig. Heb wel even rondgekeken naar hosting en ook daar ben ik wel uit. Ik wil namelijk graag dat een aantal mensen continu mijn applicatie blijven testen (en thuis een systeem continu draaiend hebben, liever niet ^_-).

r.venema wijzigde dit bericht 07-02-2007 16:54 (3%)

I USE CAPS LOCK BECAUSE I WILL BECOME NOTICED, POPULAR, AND GOOD IN BED

Absolution
Berichten: 547
Reg. datum: 28 november 2001

quote:
DiedX schreef op zondag 04 februari 2007 @ 22:13:
Een korte vraag van mijn kant: ik probeer met mijn geringe programmeerervaring de oefeningen van Agile Webdevelopment with Rails te maken, maar heb het idee dat het echt een ongelooflijk gevoelige taal is qua tikfouten en interpunctie. Dit is al de 2e keer dat ik een half uur zoek naar een speld in de spreekwoordelijke hooiberg.

Ben ik de enige hierin?

Blijkbaar wel. Ik heb het zelfde stuk nog eens overgetikt, maar nu heb ik het niet meer :X
Er is (correct me if I'm wrong) geen een programmeer taal die tikfouten tollereert

You are not your post count. You are not your fps. You are not your screen resolution. You are not a beautiful and unique WON ID. You are the all singing, all dancing, crap of the internet.

quote:
Neobender schreef op donderdag 08 februari 2007 @ 01:00:
[...]


Er is (correct me if I'm wrong) geen een programmeer taal die tikfouten tollereert
en als die er wel is, dan nog. Je moet je code gewoon goed op orde hebben. Interpunctie en hoofdletter wijs. Zo is je code makkelijk leesbaar voor anderen, en loop je jezelf niet scheel te zoeken wanneer je iets wilt wijzigen
Freelance GUI Designer

Hier komt ie, domste vraag van de dag:

Ik wou graag wat spelen met SimpelLog, een simpele blogengine gebaseerd op Ruby. Mijn hosting (bij GoDaddy) voldoet aan alle vereisten, maar ik heb problemen met de installatie: Waar moet ik in hemelsnaam volgende commands ingeven?
code:
1
rake simplelog:install

Moet ik met één of andere applicatie inloggen op m'n hosting of kan ik dat in een webinterface doen? FYI, ik gebruik Mac OS X...
matsimitsu.nl
Berichten: 1.276
Reg. datum: 03 oktober 2001

quote:
MaxVoltar schreef op woensdag 14 februari 2007 @ 12:04:
Hier komt ie, domste vraag van de dag:

Ik wou graag wat spelen met SimpelLog, een simpele blogengine gebaseerd op Ruby. Mijn hosting (bij GoDaddy) voldoet aan alle vereisten, maar ik heb problemen met de installatie: Waar moet ik in hemelsnaam volgende commands ingeven?
code:
1
rake simplelog:install

Moet ik met één of andere applicatie inloggen op m'n hosting of kan ik dat in een webinterface doen? FYI, ik gebruik Mac OS X...
Je hebt shell toegang nodig tot de server van je provider. Als ze DirectAdmin gebruiken (met de juiste rails plugin) kun je het via direct admin doen. Het beste kun je dit aan je provider vragen, aangezien hij precies weet hoe ze het geïmplementeerd hebben, wij niet ;)

Onze excuses voor het ontbreken van de ondertiteling. - dailypicture.nl - mysnaplog.com | PSN ID: Tgmessi

Pagina: 1 2 3 4 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 last



VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: