2

私はいくつかの単純なブール値フィールドを宣言しましたmodel/user.rb

class User < ActiveRecord::Base
attr_accessible :name, :has_car

def  init(age)
 if age > 18
   has_car = true
 else
   has_car = false
 end
   has_car
end
...

次に、私のビュー(.html.hamlファイル)で、フィールドを印刷しようとしました:

...
%li
 - if this_user.has_car
   = "This person has a car"
 - else
   = "This person does NOT have a car"
...

何らかの理由で、this_user.has_car常に と評価されfalseます。ここで私が間違っていたことを誰か教えてもらえますか? (私はRuby/Railsに非常に慣れていません)

ありがとう

4

3 に答える 3

9

has_car?ユーザーモデルで呼び出されるメソッドを定義できます

# user.rb
def has_car?
  age > 18
end

次にthis_user.has_car?、ビューで使用します。

于 2013-03-01T04:02:08.030 に答える
1
# app/models/user.rb
class User < ActiveRecord::Base
  attr_accessible :name, :age, :has_car

  def initialize
    # Everyone does not have a car
    self.has_car = false
  end

  def has_car?
    self.has_car || self.age >= 18
  end

  def purchase_car
    self.has_car = true
  end

  def sell_car
    self.has_car = false
  end
end

user = User.newまたはを呼び出す場合は、initialize メソッドを使用しますuser = User.create。このメソッドは、単にhas_carそのインスタンスを false に設定します。

user.has_car?次に、ユーザーが車を持っているか (車を購入したか)、または 18 歳以上である場合に、どちらが true を返すかを尋ねることができます。

16 歳 (一部の州) は車を購入できるため、電話をかけuser.purchase_carて、現在車を所有していることを指定できます。このhas_car?メソッドは、has_carデータベースの列をチェックしてから、age.

このsell_carメソッドは同様のことを行いますがuser.has_car、false に設定します。

Learn Ruby on Railsこれがお役に立てば幸いです。あなたの探求に幸運を!

于 2013-03-03T20:36:59.950 に答える
0

メソッドはこのように読むべきではありませんか?

def init(age)
  if age > 18
    has_car = true
  else
    has_car = false
  end
  return has_car
end
于 2013-03-01T03:22:19.387 に答える