我有一个问题,我有一个“用户”模型和一个“专业”模型。在Professional模型中,指定它属于某个用户。
但是,在用户模型中没有书面关系。应该是这样的,用户可以有一个专业的(感谢belongs_to),但并不总是如此。
这就是问题所在:我不能通过"User.find(49).professional“来测试用户n°49是否是专业人士(它应该返回一个布尔值)。
然而,我可以做"Professional.find(65).user",如果专业人员n°65是用户,则返回true,如果不是,则返回false。
在一些用户视图中,我有一个不能工作的原因:
- if @user.professional?
div class="page-header"
h1 Professional info
ul style="list-style: none"
// Id
li
strong
= model_class.human_attribute_name(:id)
' :
= @user.professional.id
// Country
li
strong
= model_class.human_attribute_name(:country)
' :
= @user.professional.country
[...]我有一个很大的"li“列表。因此,if条件不起作用,@user.professional.someprofessionalattributes也不起作用。
我首先想到的是,我应该在用户模型"has_none_or_one“中编写代码,但当我查看官方文档时,它并不存在。
谢谢你的帮忙
发布于 2013-01-17 01:30:26
has_one是“有一个或没有”的关系。如果用户没有对应的专业人员,则其专业人员为nil。
发布于 2013-01-17 01:45:44
用来"has_one",例如:
创建此关系
在模型用户中:
class User < ActiveRecord::Base
has_one :professional, :dependent => :destroy
end在模型专业版中
class User < ActiveRecord::Base
#add this parameter in yours attributes
attr_accessible :user_id
belongs_to :user
end将索引用户添加到Professional模型(创建迁移)。
rails g migration addIdUserToProfesional在创建的迁移中添加以下内容
class addIdUserToProfesional < ActiveRecord::Migration
def change
add_column :professionals, :user_id, :integer
add_index :professionals, :user_id
end
endpdt:对不起,我的英语还是不太好,尊敬的。
https://stackoverflow.com/questions/14364172
复制相似问题