0

如何解决此错误:

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 %>

简介.rb

  has_many :users
  has_many :profile_functionalities
  has_many :functionalities, through: :profile_functionalities
  belongs_to :manager
  belongs_to :agent

功能性.rb

 # Nothing here for now

ProfileFunctionality.rb

  belongs_to :profile
  belongs_to :functionality

我认为我需要加入,因为当我在else时出现错误。

4

1 回答 1

1

您当前拥有的是多对多关系,因此功能没有profile_id列。您需要先找到配置文件,然后获取与其相关的功能:

Profile.find(current_user.profile_id).functionalities

如果current_user它本身是一个 activerecord 对象,你可以这样做:

current_user.profile.functionalities

通常,您不想专门引用 *_id 列,而是让 rails 为您进行翻译。

于 2016-04-04T20:00:42.273 回答