Tag: activerecord

如何在Ruby中取消定义类?

在Ruby中定义一个方法非常简单,我可以使用undef METHOD_NAME 。 有什么类似的课程? 我在MRI 1.9.2 。 我必须取消定义ActiveRecord模型,运行两行代码,并将模型恢复到原始forms。 问题是,我有一个模型Contact ,我正在使用一个公司的API,碰巧他们有一些叫做Contact类,改变我的模型名称将是很多工作对我来说。 在这种情况下我能做些什么?

Rails:HasManyThroughAssociationNotFoundError

has_many through关联获得has_many through工作,我有问题。 我不断得到这个例外: Article.find(1).warehouses.build ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :entries in model Article 这些是涉及的模型: class Article < ActiveRecord::Base has_many :warehouses, :through => :entries end class Warehouse < ActiveRecord::Base has_many :articles, :through => :entries end class Entry < ActiveRecord::Base belongs_to :article belongs_to :warehouse end 这是我的模式: create_table "articles", :force => true do |t| t.string "article_nr" […]

活动logginghas_many:通过删除一个关联的logging

这可能是我的一个非常基本的监督,但我似乎无法想起一个简单的方法来消除通过has_many :throughjoin的两个对象之间的关联。 IE: class Photo has_many :tags, :through => :taggings has_many :taggings, :dependent => :destroy end class Tags has_many :photos, :through => :taggings has_many :taggings, :dependent => :destroy end class Taggings belongs_to :photo belongs_to :tag end 如果你有两个对象, tag和photo ,你可以通过这样做来关联它们: photo.tags << tag 那么,是否有与此相反的简单对比? 即: photo.tags.remove tag

Rails:在数据库中强制空string为NULL

有没有一种简单的方法(即configuration)强制ActiveRecord在数据库中保存空string为NULL(如果列允许)? 这样做的原因是,如果数据库中没有默认值的情况下有一个NULLablestring列,则不设置此值的新logging将包含NULL,而将此值设置为空string的新logging不会为NULL,到我想避免的数据库中的不一致之处。 现在我在模型中做这样的事情: before_save :set_nil def set_nil [:foo, :bar].each do |att| self[att] = nil if self[att].blank? end end 哪些工作,但不是很有效率或干。 我可以把这个分解成一个方法,并将其混合到ActiveRecord中,但是在我走下这条路线之前,我想知道是否有办法做到这一点。

非永久ActiveRecord模型属性

我想添加到一个现有的模型一些不需要持久的属性,甚至映射到数据库列。 有没有解决scheme来指定这样的事情?

从已经在数据库中的数据创build种子文件

我正在使用Rails 3.0.3,并为我的“类别”表中的数据已经在数据库中,但要从中创build一个种子文件。 是否有任何耙子任务会从这张表中为我生成seeds.rb格式?

ActiveRecordcallback和validation的顺序是什么?

我想知道在创buildActiveRecord对象时调用的callback和validation的顺序是什么。 比方说,我有一些自定义validation和callback,如下所示: validates :reference_code, :if => :reference_code, :on => :create before_create :assign_reference 哪一个会先运行? callback需要先发生,否则validation可能会失败。

如何覆盖:在has_many中定义的顺序

我有 class Authors has_many :books, :order => 'name ASC' 我正试图查询按名称DESCsorting的所有书籍 Authors.books.order('name DESC') 但结果是 SELECT * FROM …. ORDER BY name ASC, name DESC 结果返回与名称sortingASC 有没有办法删除关联中的原始顺序或重写它? 或者是在关系中指定一个不好的主意? 使用Rails 3.0.3

有关空的belongs_to关联的最佳实践

想象一下以下情况: 我有一个dog模型和一个house模型。 一只狗可以属于一个房子,一个房子可以有许多狗,所以: Class Dog < ActiveRecord::Base belongs_to :house end Class House < ActiveRecord::Base has_many :dogs end 现在,想象我也想创造没有房子的狗。 他们不属于房子。 我仍然可以使用这种关系结构,并且在创build它时根本不通知:house_id 。 有更好的做法吗? Obs .:我用这个比喻来简化我的问题,但我的真实情况是:我有一个模型,用户可以生成它的实例。 他也可以创build这些实例的集合,但他可以将一个实例留在集合之外。

Rails:has_many通过多态关联 – 这个工作吗?

一个Person可以有多个Events ,每个Event可以有一个多态的可Eventablelogging。 如何指定Person和Eventablelogging之间的关系? 这里是我有的模型: class Event < ActiveRecord::Base belongs_to :person belongs_to :eventable, :polymorphic => true end class Meal < ActiveRecord::Base has_one :event, :as => eventable end class Workout < ActiveRecord::Base has_one :event, :as => eventable end 主要问题涉及Person类: class Person < ActiveRecord::Base has_many :events has_many :eventables, :through => :events # is this correct??? end 我是否说has_many :eventables, […]