- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
inverse_of 似乎在 after_initialize 回调中不起作用
class User < ActiveRecord::Base
has_many :faces, :inverse_of => :user
end
class Face < ActiveRecord::Base
belongs_to :user, :inverse_of => :faces
after_initialize :init
def init
p user.object_id
end
end
u = User.find(56)
u.object_id
=> 70242500754120
u.faces.first.user.object_id
Face Load (0.3ms) SELECT `faces`.* FROM `faces` WHERE `faces`.`user_id` = 56 LIMIT 1
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 56 LIMIT 1
70242477010060
=> 70242500754120
u.faces.first.user == u
=> true
最佳答案
init 方法实际上是从数据库中获取用户对象并再次返回它。
每次初始化人脸时,应用程序都会向数据库询问用户,实例化它,打印 object_id ......然后忘记它。
我建议使用 eager loading具有范围的用户:
class Face
belongs_to :user
scope :with_user, -> { joins(:user) }
end
关于ruby-on-rails - inverse_of 在 after_initialize 内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374923/
我有以下(高度简化的)模型,它使用 will_paginate class Search 1 end end 我的表演 Action 中的 Controller 代码是 @search = Se
每当我的 Rails 4 应用程序在部署后加载时,我想对另一个应用程序进行 REST API 调用,告诉它我的应用程序已准备就绪并开始一些测试。 我最初打算在 initialzers 文件夹中执行此操
inverse_of 似乎在 after_initialize 回调中不起作用 class User :user end class Face :faces after_initialize
更新 我错误地检查了edgerails指南,而不是当前正确的Rails 3指南(其中没有提到after_initialize)。不知道为什么edgerails指南是“不正确的”,但我认为edgerai
为 after_find 和 after_initialize 事件定义回调的唯一方法是将它们定义为方法。如果您尝试使用第二种技术将它们声明为处理程序,它们将被默默忽略。 谁能解释为什么会这样? 为什
我正在使用 FactoryGirl 和 Rspec 进行测试。 如果 init 为 nil,模型会在 init 之后设置一个外键。因此它使用另一个关联的数据。但是我该如何测试呢? 通常我会使用一个工厂
我有以下2个型号 class Sport :productable accepts_nested_attributes_for :product, :allow_destroy => true
我有两个具有一对多关联的模型。我想在初始化时根据父模型的某些状态在子模型上设置默认值。这涉及到在需要通过belongs_to关联访问父级的子级上触发after_initialize回调。问题是,当我使
我有一个这样定义的 Family 类: class Family true validates :name, :presence => true,
我有一个名为 Purchase 的模型,其中包含一个名为 tickets 和 amount 的字段。这个模型属于Event,是有价格的。我想在创建新 Purchase 后调用 update_amoun
我已经为我的项目编写了一个扩展 ActiveRecord 模型行为的方法,我已经删除了其中的大部分内容,请考虑以下代码: class ActiveRecord::Base def self.has
我有一个运行良好的模型: class Weight :user_id 它开始在验证时抛出错误。不是验证错误而是 Ruby 错误: >> w.valid? ActiveRecord::MissingA
我的 Rails 应用程序有许多形成层次结构的模型。例如:零售商 > 部门 > 产品类别 > 产品 > 评论。 业务需求是高权限用户可以与新的或现有的“普通”用户“共享”层次结构中的任何单个元素。如果
我定义了一个 after_initialize和一个 after_find在我的 User 中回调这样的模型: 请假设我的 User有一个名为 email 的属性也是。 class User Use
我正在尝试使用 after_initialize 为对象设置一些默认值。我遇到的问题是,无论如何创建对象,我都希望调用它。 我的类(class): class Foo "things")和Foo.c
型号: class Project :comments end class Post < AR::Base has_many :comments belongs_to :user end 现在
我是一名优秀的程序员,十分优秀!