1

私はモデル化しなければUserなりませんCompany。そして、次のような関連付け:

class User < ActiveRecord::Base
  has_and_belongs_to_many :companies
end

class Company < ActiveRecord::Base
  has_and_belongs_to_many :users
end

結合テーブルを作成するための移行中:

class CreateCompaniesUsers < ActiveRecord::Migration
 def change
   create_table :companies_users, :id => false do |t|
     t.references :company
     t.references :user

     t.timestamps
   end
 end
end

次の場合、正常に動作しています。

user = User.new(:name => "name", :email => "email@em.com" :password => "pass")
user.companies.find_or_create_by_name(:name => "name")

user.save

users次の場合は機能しません(ただし、データをandに挿入しますcompanies):

user = User.first # or by finding some existing user
user.companies.find_or_create_by_name(:name => "name")

さらに、次のメッセージが表示されます。

Creating scope :page. Overwriting existing method Company.page.

これから抜け出すのを手伝ってください。ありがとう。

4

1 に答える 1

0

ページネーションにカミナリを使用していますか?この問題を参照してください: https://github.com/amatsuda/kaminari/issues/48

この種の問題は、Kaminari に対して何年にもわたって開かれてきました。これらの問題はすべて、「Creating scope :page」というメッセージが表示されます。

gemfile/bundle から Kaminari を削除してから、テスト ケースを再試行してください。

または、user.companies で作成した新しい会社を調べて、有効であることを確認してください。新しく作成されたオブジェクトが検証に失敗した場合、find_or_create は保存されません。

于 2013-08-14T21:23:19.697 に答える