我必须对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
和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.
请帮我摆脱这个。感谢。
答案 0 :(得分:0)
你是否正在使用Kaminari进行分页?请参阅此问题:https://github.com/amatsuda/kaminari/issues/48
这些年来,有很多针对Kaminari的问题,包括一个基于使用will_paginate的问题。所有这些问题导致您看到的“创建范围:页面”消息。
尝试从gemfile / bundle中删除Kaminari,然后重试测试用例。
或者,尝试检查您在user.companies中创建的新公司并确保其有效。如果新创建的对象验证失败,则find_or_create将不会保存。