我有一些rails应用程序。例如,我有下一个模型:User
,Post
。
生成User
模型Devise
。 Post
模型包含text
列和user_id
列。关系:用户has_many :posts
和帖子belongs_to :user
。我需要确定谁是帖子的所有者。例如,所有者可以编辑他的帖子。
如果我理解正确,我需要创建一些助手。我是rails的新手,不明白是谁做的。有人能帮助我吗?
答案 0 :(得分:3)
“助手”一词可能令人困惑。如果使用rails生成器,则会在app/helpers
目录中获取名为<model>s_helper.rb
的文件。您可以在此处定义可在视图模板中直接访问的方法。例如,您可以根据存储在用户模型的pronoun
字段中的值来定义名为gender
的方法,例如
def pronoun(user)
case user.gender
when "M"
"his"
when "F"
"her"
else
"their"
end
end
因此,在引用某些用户的视图中,您可以执行
<%= @user.name %> got <%= pronoun(@user) %> ice cream in <%= @user.city %>.
当然,您可以在模型中完成相同的操作,而且通常这是编写帮助程序的更好地方。例如,定义用户状态的逻辑可能是
def status_name
if created_at > 30.days.ago
"old timer"
else
"noob"
end
然后,只要您可以引用用户模型的实例,就可以调用@user.status_name
通常,模型方法不是关于表示而是关于逻辑。