Tag: activerecord

如何塑造“特色”的概念(即,当一位艺术家在歌曲中“精选”时)

有时不止一位艺术家会在一首歌上。 例如,Jay-z的新歌“A Star is Born”以艺术家Cole为特色,因此将被列为目录中的“Jay-z(特色Cole) – 明星出生”。 我的问题是如何在我的数据库中建模。 现在它非常简单:每首歌都belongs_to :artist和每位艺术家都有很多歌has_many :songs 。 我想改变这一点,以便歌曲有很多艺术家,一个艺术家被指定为“主要” – 即,如果A,B和C都与给定的歌曲相关联而A是主要的,那首歌曲的艺术家将是显示为“A(特色B和C)”。 这就是我的想法: 歌曲: has_many :artists, :through => :performances 艺术家: has_many :songs, :through => :performances performance模型在哪里有一个primary?字段primary? ,指定给定的表演是否是歌曲的“主要”表现,意味着与该表演相关的艺术家是该歌曲的主要艺术家。 这种方法有意义吗?

Rails ActiveRecord与has_many关联相交查询

我有以下型号: class Piece < ActiveRecord::Base has_many :instrument_pieces has_many :instruments, through: :instrument_pieces end class Instrument < ActiveRecord::Base has_many :pieces, through: :instrument_pieces has_many :instrument_pieces end class InstrumentPiece < ActiveRecord::Base belongs_to :instrument belongs_to :piece end 我有以下查询: Piece .joins(:instrument_pieces) .where(instrument_pieces: { instrument_id: search_params[:instruments] } ) .find_each(batch_size: 20) do |p| search_params[:instruments]是一个数组。 此查询的问题在于它将检索具有任何乐器的所有乐曲,因此如果search_params[:instruments] = [“1″,”3”] ,则查询将返回乐器关联为1或者1的乐曲。 3或两者兼而有之。 我希望查询只返回其乐器关联包括乐器1和3的乐曲。我已经阅读了文档,但我仍然不确定如何做到这一点……

如何首先按现有布尔属性排序结果

我有很多featured?记录featured? 属性。 我想查询所有内容,将它们分组为特色和非特色,如果可能的话,在它们的组之间随机分组(随机并显示特色的,然后随机随机)。 知道如何在ActiveRecord上执行此操作吗?

如何查找has_many关联数为零的所有记录?

假设您有以下has_many关联的Question模型:(来自此插件的示例) has_many :comment_threads, :class_name => “Comment”, :as => :commentable, :dependent => :destroy 如何定义返回没有相关注释的问题的范围或类方法? 基本上我想要Question.unanswered返回所有问题,零评论。

保存模型时删除关联的记录

我正在运行ActiveRecord 3.2.6。 鉴于我有这些模型定义: 我的发票模型 class Invoice true, :dependent => :delete_all attr_accessible :recipient_email # This is just a simple wrapper with allows me to build multiple # items at once and to specify them as a Hash instead of Item.new. def items=(ary) super ary.map{|item| item.is_a?(Hash) ? items.build(item) : item} end end 我的物品模型 class Item < ActiveRecord::Base […]

Rails / ActiveRecord,如何防止覆盖select?

举个例子,我想运行一个类似的查询 people = Person.select(“GROUP_CONCAT(`first` SEPARATOR ‘, ‘) as names”) \ .where(last: “smith”).group(:age).order(:age) # which basically gives me something like # SELECT GROUP_CONCAT(`first` SEPARATOR ‘, ‘) as names … ##################### # but when I add pluck people.pluck(:names) # it does # SELECT names … # and gives me an Unknown column error 如何使rails / activerecord处理select select查询的结果而不是覆盖它?

ActiveRecord无法更新HABTM关系

我使用一个简单的模型进行用户授权,使用两个ActiveRecords User和Role User和Role彼此之间具有HABTM关系。 我尝试创建一个用户界面,通过简单的复选框为用户分配角色 – 就像在Railscasts第17集中一样。 我的问题是User#new和User#update_attributes都不使用我的表单提交的参数来更新User对象及其角色之间的关系。 params[:user][:role_ids]包含正确的值。 但是在User.new(params[:user])或@user.update_attributes(params[:user])之后User.new(params[:user])调用@user.roles返回一个空数组。 使用@user.roles或@user.role_ids手动分配角色,但不是User#new或User#update_attributes的“魔术” 。 有任何想法吗?

对于嵌套的父/子模型,Rails会以什么顺序进行模型回调?

我知道保存模型的一般顺序是最深的孩子,然后逐渐到达父母。 但我对其他回调感到疑惑,是否会发生以下情况: ChildA – before validation ChildB – before validation Parent – before validation ChildA – after validation ChildB – after validation Parent – after validation ChildA – before save ChildB – before save Parent – before save … 或者沿着以下方向: ChildA – before validation ChildA – after validation ChildA – before save … ChildB – […]

两个表作为Rails中的一个模型

是否可以在rails中设置依赖于两个表的连接的模型? 这意味着,为了找到/更新/销毁模型记录,需要在连接中链接在一起的两个数据库表中的两个记录。 该模型将只是两个表的所有列包装在一起,然后可以用于表单等。 这样,当模型被创建/更新时,它只是一个应用于模型的表单变量哈希? 在Rails 2或3中这可能吗?

如何本地化活动记录错误消息

我试图找出如何在我的rails应用程序中本地化错误项目名称,当用户使用不正确的数据签名时出现…我想出了如何覆盖消息而不是消息的名称(“密码”) ,“登录”,“电子邮件”,……) de: activerecord: errors: models: user: attributes: password_confirmation: blank: “” password: confirmation: “” blank: “” too_short: “” login: taken: “” blank: “” too_short: “” email: taken: “” blank: “” too_short: “” invalid: “” template: header: “” body: “” 谢谢马库斯