草庐IT

has-many

全部标签

ruby - 从 rails 3 升级到 rails 4 时 has_many 关联的顺序错误

我正在尝试将一个项目从Rails3更新到Rails4。在Rails3中,我正在做:classSale:destroyhas_many:tint_codes,:through=>:windows,:uniq=>true,:order=>'codeASC'has_many:tint_types,:through=>:tint_codes,:uniq=>true,:order=>'valueASC'end当我调用sale.tint_types时,它会在Rails3中执行以下查询:SELECTDISTINCT"tint_types".*FROM"tint_types"INNERJOIN"tin

ruby-on-rails - 使用 has_many :through 时如何访问 Rails 连接模型属性

我有一个类似这样的数据模型:#columnsincludecollection_item_id,collection_id,item_id,position,etcclassCollectionItem:collection_items,:source=>:collectionendclassCollection:positionhas_many:items,:through=>:collection_items,:source=>:item,:order=>:positionend一个项目可以出现在多个集合中,也可以在同一个集合中的不同位置出现不止一次。我正在尝试创建一个辅助方法来创

ruby-on-rails - Ruby on Rails2.3.8 : Unit Testing: Rails/Ruby has setup to run before each test. 在所有测试之前运行的方法怎么样?

我想在每次运行测试时初始化数据库一次,而不是每次测试。我知道Rspec有before(:all),但我无法让它工作。我想知道Rails是否有类似的东西。 最佳答案 首先:在Test::Unit中曾经有一个before(:all)等价物,但它被删除了(不知道为什么)。其次:有很好的理由不做你想做的事——测试应该相互独立运行,而不是依赖于数据库中的状态。这样您就可以保证它完全测试您期望它测试的内容。如果您有一个更改数据库状态的测试,并且您移动它并且它在另一个期望它是另一种状态的测试之后运行-您会遇到问题。因此,所有测试必须是独立的。因此

ruby-on-rails - ruby on rails has_many(和类似的)是如何实现的?

我正在分析Rails源代码,因为我想了解has_many和类似结构的内部工作原理。到目前为止,我能够找到该方法的实现位置(linktogithub):它在ActiveRecord::Associations模块中defhas_many(name,options={},&extension)Builder::HasMany.build(self,name,options,&extension)end这个最终在类ActiveRecord::Associations::Builder::CollectionAssociation中结束(linktogithub)defself.build(m

ruby-on-rails - 让 fields_for 与 has_many 关系一起工作

我在生成嵌套模型表单时遇到问题。这是我的模型:classWorkout:scoresaccepts_nested_attributes_for:scoresendclassScore:scoresend在WorkoutController中,这是我为新操作准备的内容:defnew@workout=Workout.new3.times{@workout.scores.build}respond_todo|format|format.html#new.html.erbformat.json{renderjson:@wod}endend但是,在表单中,当我尝试fields_for时,我什么也

ruby-on-rails - Hirb - "Too many fields.."仅当从 irbrc 加载时(不直接在控制台中)

我正在尝试在我的控制台中设置Hirb。当我输入时:require'hirb'Hirb.enable我的(相当大的)表格打印良好(列名缩短)。但是,我想在加载railsc时自动加载这个(和其他gem),所以我编辑了我的.irbcifRails.envrequire'rubygems'require'hirb'Hirb.enablerequire'wirble'Wirble.initWirble.colorizerequire'awesome_print'end当从控制台(Account.all)运行相同的命令时,我收到错误:Toomanyfieldsforthecurrentwidth.

ruby-on-rails - 在 has_many :through association, 用 lambda 替换条件

我有这个关联:has_many:foo_participators,through::foos,source::user,conditions:"foos.state='completed'"Rails告诉我:DEPRECATIONWARNING:ThefollowingoptionsinyourBar.has_many:foo_participatorsdeclarationaredeprecated::conditions.Pleaseuseascopeblockinstead.Forexample,thefollowing:has_many:spam_comments,condi

ruby-on-rails - 通过 ID 数组的关联创建多个 has_many

我有模型User、Photo和Favorite,其中favorites是来自的连接表用户到照片,即:classUser假设@user是User的实例,photo_ids是照片的主键数组。将所有这些照片添加到@user.photos的最快和/或最简洁的方法是什么?我能做到的最好的是:@user.favorites.create(photo_ids.map{|id|{photo_id:id}})但这对我来说似乎很冗长。Rails没有更好的方法来处理这个问题吗?其他问题涉及通过嵌套表单创建多个has_many:through:关联,但我试图在JSONAPI中执行此操作,因此不涉及任何表单。

ruby-on-rails - rails 5 : Add record to join table without model (has_and_belongs_to_many)

我有一个User和MeetOption表。这是一个多对多关系,我能够使用create_join_table命令创建一个连接表:railsgmigrationCreateJoinTableUsersMeetOptions用户meet_options这生成了一个迁移文件:classCreateJoinTableUsersMeetOptions我还使用has_and_belongs_to_many创建了user和meet_option模型之间的关联classUserclassMeetOption关联工作正常,我可以在Rails控制台中查询例如user.meet_options。我的问题是:加

ruby-on-rails - 自引用 has_many :through with customized :primary key issue

我正在尝试在我的Rails2.3.8应用程序(ruby1.8.7)中模拟twitter模型classConnection'subject_id',:primary_key=>'user_id',:class_name=>'User'belongs_to:follower,:foreign_key=>'follower_id',:primary_key=>'user_id',:class_name=>'User'endclassUser'user_id',:foreign_key=>'follower_id',:class_name=>'Connection'has_many:relat