我的Item模型中有一些代码(非常宽松),例如:

def author_id=(xyz) 
  book = Book.find_by_author_id(xyz)
  book.author_id = self.id
end

创建新记录时似乎没有设置self.id ...有什么想法吗?

===============>>#1 票数:4 已采纳

id设置为仅在将其保存到数据库后才进行记录。 所以你可以在这里添加一个简单的回调

after_create (or after_save - whatever you need) do |record|
  book = Book.find_by_author_id(xyz)
  book.update_attributes :author_id => record.id
end

===============>>#2 票数:2

如果selfnew_record? (不在数据库中保留),您将无法分配这样的ID,因为还没有ID。 但是,应该可以将book.author设置为self

如果不是您的情况,则应考虑稍微说明一下您的问题。

===============>>#3 票数:0

创建新记录时,尚未设置ID,因为该对象尚未在数据库中。 您可以使用实例方法new_record?()对其进行测试。

  ask by Elliot translate from so

未解决问题?本站智能推荐:

3回复

Rails 3,在记录创建时更新控制器中的链接模型

在我的rails应用程序中,我具有Posts模型,该模型具有has_many评论。 每次发布新评论时,我都希望更新Posts模型中的updated_at列。 我假设我需要在Comments控制器的create方法中执行此操作。 是否有人对执行此操作的特定方式有所了解?
1回复

在rails中通过has_many通过与模型关联的多个联接记录ID搜索模型

我有如下产品模型设置: 我想搜索具有多个属性关联的产品。 我认为这可能会起作用: 但这似乎并不能满足我的需求。 这在哪里ID或ID。 所以我尝试了以下方法: 但这也不起作用,它返回0个结果。 因此,我的问题是如何通过传入相同模型类型的多个联接模型的属性
2回复

最近在多个关联模型轨道中创建的记录的订单

我有三个关联的模型 artical.rb: 我想订购带有最近创建的记录的艺术品 顺序将取决于文本,注释,附件在顶部具有新注释,文本或附件的区域: 提前致谢
1回复

Rails在创建之前或之后如何在模型中创建关联?

我正在使用回调创建关联,但是创建后没有关联 有人暗示在模型中而不是在控制器中如何关联?
1回复

在将其保存在rails 3中之前销毁记录

在我的模型中,我指定了一个要运行的before_save方法,并根据某些数据检查新记录。 如果新记录不是我想要的 - 我怎么能阻止它被保存? 这基本上是我想要做的(并且失败): 注意:我的代码比这更复杂 - 只是做一个简单的例子。
1回复

在Rails 3的模型中为新项目生成唯一的ID

我将书籍项目填充到我的书籍模型中, 但是我发现有很多项目具有相同的ID。 因此,如何为商品创建唯一的ID。 为了防止许多物品具有相同的ID? 这是本书的模型代码 这是我的物品的一部分 这是生成我的数据的瑞克代码 表中的列我使用Postgre DB
2回复

如何在模型中的块中获取记录ID?

所以我有一个表单,为帖子提交一些自定义属性。 让我们称之为“thing_attributes”。 让我们说我是从现有的帖子发布的。 在我的Post模型中,我有以下内容: 我的实际代码更复杂 - 所以我意识到这似乎是asinine,但它在我的执行中是有意义的。 无论哪种
1回复

在Rails3中创建日志和历史记录

我正在尝试在我的应用程序中创建一些有关用户的日志和历史记录。 例如,我想知道在给定的一天中任何用户的帖子总数。 还有其他一些很酷的指标。 即时而言,我的假设是唯一的方法是让cron作业运行一些任务,计算这些数字,并将每天为每个用户存储在新表中。 是否有更好的方法或替代方法来解
2回复

while循环在rails中创建多个记录

我正在构建一个用户可以购买跟踪号码的应用程序。 我有一个订单模型和一个订单交易模型。 如果订单事务从网关成功返回,我使用after_save回调来触发创建跟踪号并将它们插入数据库的方法。 有时用户只订购一个,但如果他们订购的不止一个,我似乎无法创建和插入多个记录。 这就是我正在使用的
1回复

在rails / ruby​​中创建记录之前,请在参数上调用方法

在我的链接控制器的create方法中,我调用以下命令建立一个新链接,然后在url属性上调用一个方法以删除某些内容: 有没有一种方法可以结合这两个语句,这样我就可以在将其发送到数据库之前/之内在url参数上调用strip_http方法? 感觉效率更高,我可以将数据库调用减少一个。