大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 将has_many设置为inverse_of:通过rails 4.1,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
但是,似乎inverse_of仍然不适用于has_many:through
例如我在以下示例中为inverse_of尝试的每个组合都不起作用
class Event < ActiveRecord::Base has_many :attendances has_many :users,through: :attendance class User < ActiveRecord::Base has_many :attendances has_many :events,through: :attendances class Attendance < ActiveRecord::Base belongs_to :event belongs_to :user
任何这方面的想法应该起作用?如果是这样,在这个例子中如何设置inverse_of?
例如我试过的(也试过has_many:通过)
class Event < ActiveRecord::Base has_many :attendances,:inverse_of => :event has_many :users,through: :attendance end class User < ActiveRecord::Base has_many :attendances,:inverse_of => :user has_many :events,through: :attendances end class Attendance < ActiveRecord::Base belongs_to :event,:inverse_of => :attendances belongs_to :user,:inverse_of => :attendances end
也试过
class Event < ActiveRecord::Base has_many :attendances has_many :users,through: :attendance,:inverse_of => :events end class User < ActiveRecord::Base has_many :attendances has_many :events,through: :attendances,:inverse_of => :users end class Attendance < ActiveRecord::Base belongs_to :event belongs_to :user end
它花了一些试验和错误(和服务器重新启动),但以下工作对我来说:
class User < ActiveRecord::Base has_many :company_users has_many :companies,through: :company_users end class Company < ActiveRecord::Base has_many :company_users has_many :users,through: :company_users end class CompanyUser < ActiveRecord::Base belongs_to :company,inverse_of: :company_users belongs_to :user,inverse_of: :company_users end
为了清楚起见:
user = User.last company = user.companies.build( ... ) company.save # ... # SQL (0.9ms) INSERT INTO "public"."company_users" ("company_id","created_at","updated_at","user_id") VALUES ($1,$2,$3,$4) RETURNING "id" [["company_id",4],["created_at","2014-10-03 03:40:58.836975"],["updated_at",["user_id",1]] (1.6ms) COMMIT CompanyUser.last <CompanyUser:0x00000020339710> { :id => 4,:company_id => 4,:user_id => 1,:created_at => Thu,02 Oct 2014 20:40:58 PDT -07:00,:updated_at => Thu,02 Oct 2014 20:40:58 PDT -07:00 }
所以基本上我只是在连接模型中设置了inverse_of
以上是大佬教程为你收集整理的ruby-on-rails – 将has_many设置为inverse_of:通过rails 4.1全部内容,希望文章能够帮你解决ruby-on-rails – 将has_many设置为inverse_of:通过rails 4.1所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。