首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails关系"Has_none_or_one“

Rails关系"Has_none_or_one“
EN

Stack Overflow用户
提问于 2013-01-17 01:26:34
回答 2查看 105关注 0票数 0

我有一个问题,我有一个“用户”模型和一个“专业”模型。在Professional模型中,指定它属于某个用户。

但是,在用户模型中没有书面关系。应该是这样的,用户可以有一个专业的(感谢belongs_to),但并不总是如此。

这就是问题所在:我不能通过"User.find(49).professional“来测试用户n°49是否是专业人士(它应该返回一个布尔值)。

然而,我可以做"Professional.find(65).user",如果专业人员n°65是用户,则返回true,如果不是,则返回false。

在一些用户视图中,我有一个不能工作的原因:

代码语言:javascript
复制
- 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“中编写代码,但当我查看官方文档时,它并不存在。

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-17 01:30:26

has_one是“有一个或没有”的关系。如果用户没有对应的专业人员,则其专业人员为nil

票数 4
EN

Stack Overflow用户

发布于 2013-01-17 01:45:44

用来"has_one",例如:

创建此关系

在模型用户中:

代码语言:javascript
复制
class User < ActiveRecord::Base
 has_one :professional, :dependent => :destroy
end

在模型专业版中

代码语言:javascript
复制
class User < ActiveRecord::Base
 #add this parameter in yours attributes
 attr_accessible :user_id

 belongs_to :user
end

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

代码语言:javascript
复制
rails g migration addIdUserToProfesional

在创建的迁移中添加以下内容

代码语言:javascript
复制
class addIdUserToProfesional < ActiveRecord::Migration
  def change
    add_column :professionals, :user_id, :integer
    add_index :professionals, :user_id
  end
end

pdt:对不起,我的英语还是不太好,尊敬的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14364172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档