Has_many:通过 Rails 4 实例变量不起作用

Posted

技术标签:

【中文标题】Has_many:通过 Rails 4 实例变量不起作用【英文标题】:Has_many :through Rails 4 Instance variable not working 【发布时间】:2015-05-20 21:32:36 【问题描述】:

Ruby on Rails 4 中的强参数有问题。 我有 3 个模型 Entityuseruser_entity

User_entityentityuserhas_many :through 关联在一起。

这是完美运行的代码!

/views/user_entity/show.html.erb

<p>
  <strong>User:</strong>
  <%= @user_entity.user_id %>
</p>

当我修改它时,它不会!

<p>
  <strong>User:</strong>
  <%= @user_entity.user.name %>
</p>

我得到的错误是:

#已提取的未定义方法“用户” 来源(第 433 行附近): 别的 match = match_attribute_method?(method.to_s) 匹配 ? attribute_missing(match, *args, &block) : 超级 结尾 结束

我认为这是因为strong params 不允许我访问来自user 控制器的数据,但我不知道如何将这些数据列入user_entity 模型的白名单。

请帮忙。

/models/entity.rb

class Entity < ActiveRecord::Base
  accepts_nested_attributes_for :user_entities
  has_many :user_entities
  has_many :users, :through => :user_entities
end

/models/user.rb

class User < ActiveRecord::Base
  accepts_nested_attributes_for :user_entities
  has_many :user_entities
  has_many :entities, :through => :user_entities
end

/models/user_entity.rb

class User_entity < ActiveRecord::Base
  belongs_to :entities
  belongs_to :users
end

【问题讨论】:

您能否将您的UserUserEntityEntity 模型添加到您的问题中? + 你如何定义@user_entity?您在上面有一个拼写错误“eser_entity”,我猜它只是在这里,而不是在您的实际代码中? 错误输入:@eser_entity 而不是 @user_entity 【参考方案1】:

您似乎拼错了&lt;%= @eser_entity.user.name %&gt;

应该是&lt;%= @user_entity.user.name %&gt;

编辑:

在 /models/user_entity.rb 中,您使用 class User_entity 作为模型的类名。类名应该是 CamelCased:

class UserEntity < ActiveRecord::Base
  ...
end

【讨论】:

另外,这只是一个示例。实际上我使用了一项工作,所以这不是解决方案。这是我被困在gitmatt.com/posts/5 的教程,问题是我不能将attr_accessible 与rails 4 一起使用。那些强大的参数正在犯这个错误。至少我是这么认为的。

以上是关于Has_many:通过 Rails 4 实例变量不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4找不到关联has_many,通过:关系错误

Rails 4,通过连接表在has_many中指定自定义外键?

如何使用带有 has_many 的 PaperTrail 版本控制:通过在 Rails 4 中实现关联

Rails 4找不到关联has_many,通过:关系错误

通过Rails中的关联使用has_many创建新模型时出现不允许的参数错误

Rails 中的 has_many 关联迁移