【问题标题】:Separate post IDs单独的帖子 ID
【发布时间】:2016-05-07 11:56:01
【问题描述】:

我有 3 个控制器/模型

routes.rb:

  resources :boards do
    resources :posts do
      resources :replies

目前我有一个单独的列用于 ID :pid,并为每个帖子/回复分配一个有罪的 PID。

models/reply.rb:

class Post < ActiveRecord::Base
  belongs_to :board
  has_many :replies, dependent: :destroy
  has_one :board
  accepts_nested_attributes_for :replies
  include FriendlyId
  friendly_id :pid, use: :slugged
  after_create :set_pid
  def set_pid
    post_max = Post.maximum(:pid)
    reply_max = Reply.maximum(:pid)
    if post_max.to_i < reply_max.to_i
       self.update_attributes(:pid => reply_max.to_i + 1) 
    else
       self.update_attributes(:pid => post_max.to_i + 1)
    end
  end
end

这可行,但前提是只有一块板。如何区分每个板的 PID?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您必须使用范围:

    post_max = self.board.posts.maximum(:pid)
    

    【讨论】:

    • 这会返回错误:no such column: boards.post_id: SELECT "boards".* FROM "boards" WHERE "boards"."post_id" = ? LIMIT 1
    • 如果定义了关系并且您没有正确的列,那么您的架构中有错误。在你的问题中它说belongs_to :board 这意味着应该可以工作,但has_one 可能是一个错误。
    • @aidiah 值得为此提出另一个问题,一次一件事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2013-09-28
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多