Questions tagged «activerecord»

Active Record是一种将域逻辑与单个对象中的存储抽象相结合的模式。使用此标记可以查询有关模式的问题,可以使用[rails-activerecord]来查询有关Rails ORM框架的问题。


9
如何返回一个空的ActiveRecord关系?
如果我有一个带lambda的作用域并且它接受一个参数,则取决于参数的值,我可能知道不会有任何匹配项,但是我仍然想返回一个关系,而不是一个空数组: scope :for_users, lambda { |users| users.any? ? where("user_id IN (?)", users.map(&:id).join(',')) : [] } 我真正想要的是“无”方法,与“全部”相反,该方法返回仍然可以链接的关系,但导致查询短路。

11
Rails:从列中选择唯一值
我已经有一个可行的解决方案,但是我真的很想知道为什么这不起作用: ratings = Model.select(:rating).uniq ratings.each { |r| puts r.rating } 它选择但不打印唯一值,而是打印所有值,包括重复项。它在文档中:http : //guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

6
Rails Rake任务是否提供对ActiveRecord模型的访问?
我正在尝试创建一个自定义的rake任务,但似乎我无权访问我的模型。我认为这是Rails任务中隐含的内容。 我在lib / tasks / test.rake中有以下代码: namespace :test do task :new_task do puts Parent.all.inspect end end 这是我的父模型的样子: class Parent < ActiveRecord::Base has_many :children end 这是一个非常简单的示例,但是出现以下错误: /> rake test:new_task (in /Users/arash/Documents/dev/soft_deletes) rake aborted! uninitialized constant Parent (See full trace by running task with --trace) 有任何想法吗?谢谢


19
Rails模型中不区分大小写的搜索
我的产品型号包含一些物品 Product.first => #<Product id: 10, name: "Blue jeans" > 我现在要从另一个数据集中导入一些产品参数,但是名称的拼写不一致。例如,在另一个数据集中,Blue jeans可以拼写为Blue Jeans。 我想这样做Product.find_or_create_by_name("Blue Jeans"),但这将创建一个新产品,几乎与第一个相同。如果我想查找和比较小写的名字,该怎么办? 性能问题在这里并不是很重要:只有100-200种产品,我想将此作为导入数据的迁移来运行。 有任何想法吗?

6
是什么引起此ActiveRecord :: ReadOnlyRecord错误?
在此之前的问题得到了解答。我实际上发现我可以从该查询中删除联接,所以现在可以使用的查询是 start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true] 这似乎起作用。但是,当我尝试将这些DeckCard移动到另一个关联中时,出现ActiveRecord :: ReadOnlyRecord错误。 这是代码 for player in @game.players player.tableau = Tableau.new start_card = start_cards.pop start_card.draw_pile = false player.tableau.deck_cards << start_card # the error occurs on this line end 和相关的模型(Tableau是桌上的玩家卡片) class Player …

5
Rails的find_or_create_by不止一个属性?
活动记录中有一个方便的动态属性,称为find_or_create_by: Model.find_or_create_by_<attribute>(:<attribute> => "") 但是,如果我需要通过多个属性来find_or_create怎么办? 假设我有一个名为GroupMember的模型来处理组与成员之间的M:M关系。我可能有很多实例,其中member_id = 4,但我再也不想拥有一个实例,其中member_id = 4和group_id = 7。 GroupMember.find_or_create(:member_id => 4, :group_id => 7) 我意识到可能有更好的方法来处理此问题,但是我喜欢find_or_create的方便性。



4
delete_all与destroy_all?
我正在寻找从表中删除记录的最佳方法。例如,我有一个用户,其用户ID跨多个表。我想删除该用户以及所有表中具有其ID的每条记录。 u = User.find_by_name('JohnBoy') u.usage_indexes.destroy_all u.sources.destroy_all u.user_stats.destroy_all u.delete 这样可以正常工作,并从所有表中删除用户的所有引用,但是我听说这destroy_all很繁琐,所以我尝试了delete_all。它只会将用户从其自己的用户表中删除,并且将id所有其他表中的用户设置为空,但保留其中的记录不变。有人可以分享执行这样任务的正确过程吗? 我看到这在所有关联的对象上destroy_all调用了该destroy函数,但我只想确认正确的方法。


10
Rails 3迁移:是否添加参考列?
如果我使用以下方式创建新的Rails 3迁移: rails g migration tester title:tester user:references ,一切正常...但是,如果我添加一列内容如下的内容: rails g migration add_user_to_tester user:references 无法识别参考字段。简而言之,问题是:如何从命令行向Rails迁移添加引用列?


4
覆盖ActiveRecord属性方法
我在说的一个例子: class Person < ActiveRecord::Base def name=(name) super(name.capitalize) end def name super().downcase # not sure why you'd do this; this is just an example end end 这似乎可行,但是我刚刚阅读了ActiveRecord :: Base docs中有关覆盖属性方法的部分,并建议使用read_attributeand write_attribute方法。我认为以上示例中的操作一定存在问题;否则,为什么他们会认为这些方法是覆盖属性方法的“正确方法”?他们也强迫使用更丑陋的习惯用法,因此一定有充分的理由... 我真正的问题:这个例子有什么问题吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.