collection_check_boxes 错误
Error with collection_check_boxes
如何解决这个错误:
SQLite3::SQLException: 没有这样的列: functionalities.profile_id: SELECT "functionalities".* FROM "functionalities" WHERE "functionalities". "profile_id" = 1
这是我的_form.html.erb
<h3>Add functionalities</h3>
<% if current_user.admin? %>
<%= f.collection_check_boxes :functionality_ids, Functionality.all, :id, :description %>
<% else %>
<%= f.collection_check_boxes :functionality_ids, Functionality.where(profile_id: current_user.profile.id), :id, :description %>
<% end %>
Profile.rb
has_many :users
has_many :profile_functionalities
has_many :functionalities, through: :profile_functionalities
belongs_to :manager
belongs_to :agent
Functionality.rb
# Nothing here for now
简介Functionality.rb
belongs_to :profile
belongs_to :functionality
我认为我需要加入,因为当我在 else.
时出现错误
您当前拥有的是多对多关系,因此功能没有 profile_id
列。您需要先找到配置文件,然后获取与其相关的功能:
Profile.find(current_user.profile_id).functionalities
如果current_user
本身就是一个activerecord对象,你可以这样做:
current_user.profile.functionalities
一般来说,您不想专门引用 *_id 列,而是让 rails 为您进行翻译。
如何解决这个错误:
SQLite3::SQLException: 没有这样的列: functionalities.profile_id: SELECT "functionalities".* FROM "functionalities" WHERE "functionalities". "profile_id" = 1
这是我的_form.html.erb
<h3>Add functionalities</h3>
<% if current_user.admin? %>
<%= f.collection_check_boxes :functionality_ids, Functionality.all, :id, :description %>
<% else %>
<%= f.collection_check_boxes :functionality_ids, Functionality.where(profile_id: current_user.profile.id), :id, :description %>
<% end %>
Profile.rb
has_many :users
has_many :profile_functionalities
has_many :functionalities, through: :profile_functionalities
belongs_to :manager
belongs_to :agent
Functionality.rb
# Nothing here for now
简介Functionality.rb
belongs_to :profile
belongs_to :functionality
我认为我需要加入,因为当我在 else.
时出现错误您当前拥有的是多对多关系,因此功能没有 profile_id
列。您需要先找到配置文件,然后获取与其相关的功能:
Profile.find(current_user.profile_id).functionalities
如果current_user
本身就是一个activerecord对象,你可以这样做:
current_user.profile.functionalities
一般来说,您不想专门引用 *_id 列,而是让 rails 为您进行翻译。