Совет по Rails - «Используйте ассоциацию модели» - PullRequest
0 голосов
/ 26 февраля 2011

Итак, я прочитал в какой-то книге совет «Использовать ассоциацию модели», который поощряет разработчиков использовать методы сборки вместо того, чтобы вводить идентификаторы через сеттеры.

Предположим, у вас есть несколько отношений has_many в вашей модели.Каков наилучший способ создания модели?

Например, предположим, у вас есть модели Article, User и Group.

class Article < ActiveRecord::Base
  belongs_to :user
  belongs_to :subdomain
end

class User < ActiveRecord::Base
  has_many :articles
end

class Subdomain < ActiveRecord::Base
  has_many :articles
end

и ArticlesController:

class ArticlesController < ApplicationController
  def create
    # let's say we have methods current_user which returns current user and current_subdomain which gets current subdomain
    # so, what I need here is a way to set subdomain_id to current_subdomain.id and user_id to current_user.id
    @article = current_user.articles.build(params[:article])
    @article.subdomain_id = current_subdomain.id
    # or Dogbert's suggestion
    @article.subdomain = current_subdomain
    @article.save
  end
end

Isесть более чистый способ?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

Единственное, о чем я могу думать, это объединение субдомена с параметрами:

@article = current_user.articles.build(params[:article].merge(:subdomain => current_subdomain))
1 голос
/ 26 февраля 2011

Это должно быть немного чище.

@article.subdomain = current_subdomain
...