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调用或时使用初始化方法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 回答