【问题标题】:Protecting the creation of associated objects in Rails 3 with Devise使用 Devise 在 Rails 3 中保护关联对象的创建
【发布时间】:2011-10-03 15:00:37
【问题描述】:

我已经在我的 Rails 3 应用程序中设置了 Devise。 Devise 配置为使用名为 Publisher 的模型。 Publisher 有几个相关的模型。我很难概念化如何使用 Devise 保护创建/销毁/查看这些关联对象。我习惯于使用以下内容创建关联记录:

pub = Publisher.find(:params[publisher_id])
pub.books << Book.create!(:title => "War and Peace")

我确定我只是遗漏了一些简单的东西,但是我在哪里实现逻辑来确认以pub 登录的人实际上是创建此关联的人?是不是像这样直截了当?:

pub = Publisher.find(current_publisher)

如果是这种情况,我应该在哪里实现?在我们的实现中,这些记录将通过POST/publishers/:publisher_id/books(.:format) 创建。这是否意味着应该出现在 BooksController 的 #create 方法中?我知道这都是初级的,但我每六个月左右只接触一次 RoR——永远不会足够长的时间来获得持久、扎实的掌握!

【问题讨论】:

    标签: ruby-on-rails devise associations


    【解决方案1】:

    您应该使用Publisherbooks 关联创建新的Book 实例,如下所示:

    current_publisher.books.build(:title => "War and Peace")
    

    这会将一本新书添加到关联中,并为您分配出版商。

    【讨论】:

    • 有道理。这种逻辑最惯用的地方是哪里?我猜它会在自定义 PublishersController?
    • 不,您正在创建书籍,所以BooksControllercreate 操作将是执行此操作的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多