2017-03-27 1 views
0

i über die Aktivierung ausgewählten Posten als Vertreter Post stellen wollenÜber Schienen Aktivierung Post

was ist, wenn ich habe zwei Modell

class Blog < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :blog 
end 

und jedes Modell Spalten folgende

create_table "blogs", force: :cascade do |t| 
    t.string "title" 
    t.boolean "main_post_yn" 
end 

create_table "posts", force: :cascade do |t| 
    t.string "title" 
    t.integer "blog_id" 
end 
hat

und wenn Benutzer main_post_yn eingeben Wie wahr, ich möchte ausgewählte einzelne Post zeigen.


so dachte ich ...

create_table "blogs", force: :cascade do |t| 
    t.string "title" 
    t.boolean "main_post_yn" 
    t.integer "post_id" 
end 

create_table "posts", force: :cascade do |t| 
    t.string "title" 
    t.integer "blog_id" 
end 

i post_id hinzufügen Modell bloggen.


und ich obwohl folgenden fließen.

  1. Benutzer klicken auf "main_post_yn" true.
  2. Zeige alle Beiträge die zum Blog gehören.
  3. Benutzer einzelne Posten auswählen und übergeben es id
  4. auf Hauptseite Blog.post_id ist "Post.id = Blog.post_id" in der Steuerung übergeben und als Vertreter Beitrag zeigen

i denke, oberer Prozess ist kein Schienenweg. Haben Sie eine Beratung?

danke.

+1

Um sicherzustellen, dass ich dich richtig verstehe - Sie haben viele Blogs und jeder der hat viele Beiträge. Sie möchten, dass Benutzer einen Beitrag von einem der Blogs auswählen und ihn auf der Startseite für diesen Benutzer anzeigen? Wenn dies der Fall ist, sollten Sie diese Post-ID zu Ihrer Benutzertabelle hinzufügen. Und das ist es ziemlich. Ihr Benutzer erhält eine ausgewählte post_id in seiner db-Tabelle und Sie können sie verwenden, wo immer Sie wollen. –

+0

Sie benötigen eine Beziehung zwischen Ihrem 'user' und' post', oder alle Benutzer können die 'posts' sehen, deren Blog' main_post_yn 'ist wahr? – Sravan

Antwort

0

Da Sie Blog has_many :posts und Post belongs_to :blog

Sie nicht, fügen Sie post_id in Blog table.

class Blog < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :blog 
end 


create_table "blogs", force: :cascade do |t| 
    t.string "title" 
    t.boolean "main_post_yn" 
end 

create_table "posts", force: :cascade do |t| 
    t.string "title" 
    t.integer "blog_id" 
end 

Nun In der Steuerung

blogs = Blog.where(main_post_yn: true) // get all blogs with `main_post_yn` as true 

@post_ids = [] 

blogs.each do |blog| 
    @post_ids << blog.posts.pluck(:id) // push post-Id's of those blogs into an array 
end 

@posts = Post.where(id: @post_ids) // get all posts with those post-Id's 

Zeige alle Beiträge, die zum Blog gehört. wurde erfüllt.

+0

@lee, bitte überprüfe meine Antwort – Sravan