Rails HABTM关联:记录不插入连接表

时间:2013-08-14 12:28:39

标签: ruby-on-rails-3 associations

我必须对UserCompany进行建模。 和协会如:

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

在以下情况下无法正常工作(但将数据插入userscompanies):

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.

请帮我摆脱这个。感谢。

1 个答案:

答案 0 :(得分:0)

你是否正在使用Kaminari进行分页?请参阅此问题:https://github.com/amatsuda/kaminari/issues/48

这些年来,有很多针对Kaminari的问题,包括一个基于使用will_paginate的问题。所有这些问题导致您看到的“创建范围:页面”消息。

尝试从gemfile / bundle中删除Kaminari,然后重试测试用例。

或者,尝试检查您在user.companies中创建的新公司并确保其有效。如果新创建的对象验证失败,则find_or_create将不会保存。