0

我有一个问题,我有一个“用户”模型和一个“专业”模型。在 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 也不起作用。

我首先想到的是我应该在User模型中写“has_none_or_one”,但是当我查看官方文档时它并不存在。

谢谢你的帮助

4

2 回答 2

4

has_one 有或无的关系。如果用户没有相应的专业人士,则其专业人士为nil.

于 2013-01-16T17:30:26.317 回答
1

用于“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

将索引用户添加到专业模型(创建迁移)。

rails g migration addIdUserToProfesional

在创建的迁移中添加这个

class addIdUserToProfesional < ActiveRecord::Migration
  def change
    add_column :professionals, :user_id, :integer
    add_index :professionals, :user_id
  end
end

pdt:对不起,我的英语还不是很好,问候。

于 2013-01-16T17:45:43.523 回答