わかりましたので、私はこのデータ構造を持っています
class User < ActiveRecord::Base
has_many :companies, :through => :positions
has_many :positions
class Company < ActiveRecord::Base
has_many :positions
has_many :users, :through => :positions
class Position < ActiveRecord::Base
belongs_to :company
belongs_to :user
attr_accessible :company_id, :user_id, :regular_user
end
そして私のデータベース構造
create_table "positions", :force => true do |t|
t.integer "company_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.boolean "regular_user", :default => true
end
ユーザーの会社に別の会社を追加すると、regular_user フラグは常に true に設定されます
1.9.3-p125 :013 > @user.companies << Company.last
Company Load (0.3ms) SELECT `companies`.* FROM `companies`
ORDER BY `companies`.`id` DESC LIMIT 1
(0.0ms) BEGIN
SQL (0.2ms) INSERT INTO `positions`
(`company_id`, `created_at`, `regular_user`, `updated_at`, `user_id`)
VALUES
(263, '2012-07-25 13:56:56', 1, '2012-07-25 13:56:56', 757)
挿入の前にフラグを false に設定する方法はありますか
私はこれを行うことでそれを回避してきました....これはハックです
@user.positions.update_all(:regular_user => false) if @user.is_admin?
これを達成する別の方法(クリーナー)はありますか