UserService バックエンド Rails アプリの 3 つのモデル:
class User < ActiveRecord::Base
has_many :services
has_many :members
has_many :groups, :through => :members
has_many :managed_groups, :class_name => "Group"
accepts_nested_attributes_for :managed_groups, :services, :groups
end
class Group < ActiveRecord::Base
has_many :members
has_many :users, :through => :members
belongs_to :manager, :class_name => "User", :foreign_key => :user_id
accepts_nested_attributes_for :users
end
class Service < ActiveRecord::Base
belongs_to :user
end
class Member < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
別の Rails フロントエンドにある 3 つの ActiveResource モデル
class User < ActiveResource::Base
self.site = "http://localhost:8801"
end
class Group < ActiveResource::Base
self.site = "http://localhost:8801"
end
class Service < ActiveResource::Base
self.site = "http://localhost:8801"
end
フロントエンドから、それは行うために動作します
Service.first.user_id = User.first
Service.user_id は belongs_to であるため、単一のプロパティです。
しかし、私はどちらもできません
User.first.groups << Group.first
また
Group.first.users << User.first
ActiveResource は GET リクエストを生成しているだけなので、何も起こりません。
完全を期すために、(フロントエンドで) 次のようなことを行うことも失敗します。
u = User.first
g = Group.first
u.groups.push(g)
等々。users_controller::update メソッドを使用するとうまくいくと思っていましたが、これが可能かどうか疑問に思っています。
2 つの ActiveResource モデルで :has_many, :through を実行した人はいますか? AR モデルのコレクションに影響を与える方法はありますか? 結合テーブルを手動で操作する必要がありますか? (それによって members_controller を作成しますか?)