diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index f73a8621c..1553259f3 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -43,7 +43,7 @@ class PostsController < ApplicationController # POST /posts # POST /posts.json def create - params[:post][:member_id] = current_member.id + params[:post][:author_id] = current_member.id @post = Post.new(params[:post]) respond_to do |format| diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb new file mode 100644 index 000000000..a7b8cec89 --- /dev/null +++ b/app/helpers/posts_helper.rb @@ -0,0 +1,2 @@ +module PostsHelper +end diff --git a/app/helpers/updates_helper.rb b/app/helpers/updates_helper.rb deleted file mode 100644 index a9af2d48a..000000000 --- a/app/helpers/updates_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module UpdatesHelper -end diff --git a/app/models/member.rb b/app/models/member.rb index ad25bf768..d9fd61d8c 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -2,7 +2,7 @@ class Member < ActiveRecord::Base extend FriendlyId friendly_id :login_name, use: :slugged - has_many :posts + has_many :posts, :foreign_key => 'author_id' has_many :gardens # Include default devise modules. Others available are: diff --git a/app/models/post.rb b/app/models/post.rb index 3588418b6..564cf5f00 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1,13 +1,13 @@ class Post < ActiveRecord::Base extend FriendlyId - friendly_id :member_date_subject, use: :slugged - attr_accessible :body, :subject, :member_id - belongs_to :member + friendly_id :author_date_subject, use: :slugged + attr_accessible :body, :subject, :author_id + belongs_to :author, :class_name => 'Member' default_scope order("created_at desc") - def member_date_subject + def author_date_subject # slugs are created before created_at is set time = created_at || Time.now - "#{member.login_name} #{time.strftime("%Y%m%d")} #{subject}" + "#{author.login_name} #{time.strftime("%Y%m%d")} #{subject}" end end diff --git a/app/views/posts/_form.html.haml b/app/views/posts/_form.html.haml index 853b12536..429ce48e0 100644 --- a/app/views/posts/_form.html.haml +++ b/app/views/posts/_form.html.haml @@ -7,8 +7,8 @@ %li= msg .field - = f.label :member_id - = f.number_field :member_id + = f.label :author_id + = f.number_field :author_id .field = f.label :subject = f.text_field :subject diff --git a/app/views/posts/_single.html.haml b/app/views/posts/_single.html.haml index 98a750efe..debf7dff3 100644 --- a/app/views/posts/_single.html.haml +++ b/app/views/posts/_single.html.haml @@ -2,14 +2,14 @@ .post .row .span1 - = render :partial => "shared/avatar", :locals => { :member => post.member } + = render :partial => "shared/avatar", :locals => { :member => post.author } .span7 - if subject %h3= link_to strip_tags(post.subject), post .post-meta Posted by - = link_to post.member.login_name, member_path(post.member) + = link_to post.author.login_name, member_path(post.author) at = post.created_at @@ -17,7 +17,7 @@ :markdown #{ strip_tags post.body } - - if current_member == post.member + - if current_member == post.author .post-actions = link_to 'Edit', edit_post_path(post), :class => 'btn' = link_to 'Delete', post, method: :delete, | diff --git a/app/views/posts/index.rss.builder b/app/views/posts/index.rss.builder index d7c32898d..a327ea793 100644 --- a/app/views/posts/index.rss.builder +++ b/app/views/posts/index.rss.builder @@ -6,7 +6,7 @@ xml.rss :version => "2.0" do for post in @recent_posts xml.item do - xml.author post.member.login_name + xml.author post.author.login_name xml.title post.subject xml.description post.body xml.pubDate post.created_at.to_s(:rfc822) diff --git a/app/views/posts/new.html.haml b/app/views/posts/new.html.haml index 8e160ba10..db20e4e8d 100644 --- a/app/views/posts/new.html.haml +++ b/app/views/posts/new.html.haml @@ -1,4 +1,4 @@ -= content_for :title, "Post an post" += content_for :title, "Post a post" - if member_signed_in? = form_for @post, :url => { :action => "create" } do |f| diff --git a/db/migrate/20130113081521_rename_post_member_to_author.rb b/db/migrate/20130113081521_rename_post_member_to_author.rb new file mode 100644 index 000000000..8bfea089b --- /dev/null +++ b/db/migrate/20130113081521_rename_post_member_to_author.rb @@ -0,0 +1,5 @@ +class RenamePostMemberToAuthor < ActiveRecord::Migration + def change + rename_column :posts, :member_id, :author_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 86c218ac7..30424ec54 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130113060852) do +ActiveRecord::Schema.define(:version => 20130113081521) do create_table "crops", :force => true do |t| t.string "system_name", :null => false @@ -77,7 +77,7 @@ ActiveRecord::Schema.define(:version => 20130113060852) do end create_table "posts", :force => true do |t| - t.integer "member_id", :null => false + t.integer "author_id", :null => false t.string "subject", :null => false t.text "body", :null => false t.datetime "created_at", :null => false @@ -85,7 +85,7 @@ ActiveRecord::Schema.define(:version => 20130113060852) do t.string "slug" end - add_index "posts", ["created_at", "member_id"], :name => "index_updates_on_created_at_and_user_id" + add_index "posts", ["created_at", "author_id"], :name => "index_updates_on_created_at_and_user_id" add_index "posts", ["slug"], :name => "index_updates_on_slug", :unique => true create_table "scientific_names", :force => true do |t| diff --git a/spec/controllers/member_controller_spec.rb b/spec/controllers/member_controller_spec.rb index f3b42f092..781a7e656 100644 --- a/spec/controllers/member_controller_spec.rb +++ b/spec/controllers/member_controller_spec.rb @@ -5,7 +5,7 @@ describe MembersController do before :each do @member1 = FactoryGirl.create(:member, :login_name => 'fred') @member2 = FactoryGirl.create(:unconfirmed_member, :login_name => 'bob') - @posts = [ FactoryGirl.create(:post, :member => @member1) ] + @posts = [ FactoryGirl.create(:post, :author => @member1) ] end describe "GET index" do diff --git a/spec/controllers/posts_controller_spec.rb b/spec/controllers/posts_controller_spec.rb index 28e8d4d66..6ab09a1c8 100644 --- a/spec/controllers/posts_controller_spec.rb +++ b/spec/controllers/posts_controller_spec.rb @@ -8,7 +8,7 @@ describe PostsController do # Post. As you add validations to Post, be sure to # update the return value of this method accordingly. def valid_attributes - { :member_id => 1, :subject => "blah", :body => "blah blah" } + { :author_id => 1, :subject => "blah", :body => "blah blah" } end # The parameters required to be passed to a Web request. diff --git a/spec/factories/member.rb b/spec/factories/member.rb index 16c814f85..cc7c44bb5 100644 --- a/spec/factories/member.rb +++ b/spec/factories/member.rb @@ -1,6 +1,6 @@ FactoryGirl.define do - factory :member do + factory :member, aliases: [:author] do login_name 'member1' password 'password1' email 'member1@example.com' diff --git a/spec/factories/post.rb b/spec/factories/post.rb index 68ed12d05..0f056691e 100644 --- a/spec/factories/post.rb +++ b/spec/factories/post.rb @@ -3,7 +3,7 @@ FactoryGirl.define do factory :post do subject "A Post" body "This is some text." - member + author created_at Time.now # Markdown is allowed in posts diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index b0b3ec21f..9257e0664 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -29,6 +29,11 @@ describe 'member' do @member.to_s.should == 'member1' "#{@member}".should == 'member1' end + + it 'should be able to fetch posts' do + @post = FactoryGirl.create(:post, :author => @member) + @member.posts.should eq [@post] + end end context 'no TOS agreement' do diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index 79af53bbe..90e7c2cbc 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -6,13 +6,13 @@ describe Post do end it "should be sorted in reverse order" do - FactoryGirl.create(:post, :subject => 'first entry', :member => @member) - FactoryGirl.create(:post, :subject => 'second entry', :member => @member) + FactoryGirl.create(:post, :subject => 'first entry', :author => @member) + FactoryGirl.create(:post, :subject => 'second entry', :author => @member) Post.first.subject.should == "second entry" end it "should have a slug" do - @post = FactoryGirl.create(:post, :member => @member) + @post = FactoryGirl.create(:post, :author => @member) @time = @post.created_at @datestr = @time.strftime("%Y%m%d") # 2 digit day and month, full-length years diff --git a/spec/views/members/show.rss.builder_spec.rb b/spec/views/members/show.rss.builder_spec.rb index f53a8d39e..a4be8cb48 100644 --- a/spec/views/members/show.rss.builder_spec.rb +++ b/spec/views/members/show.rss.builder_spec.rb @@ -4,8 +4,8 @@ describe 'members/show.rss.builder', :type => "view" do before(:each) do @member = assign(:member, FactoryGirl.create(:member)) assign(:posts, [ - FactoryGirl.build(:post, :id => 1, :member => @member), - FactoryGirl.build(:post, :id => 2, :member => @member) + FactoryGirl.build(:post, :id => 1, :author => @member), + FactoryGirl.build(:post, :id => 2, :author => @member) ]) render end diff --git a/spec/views/posts/edit.html.haml_spec.rb b/spec/views/posts/edit.html.haml_spec.rb index a137c19fc..5fe7a0387 100644 --- a/spec/views/posts/edit.html.haml_spec.rb +++ b/spec/views/posts/edit.html.haml_spec.rb @@ -2,8 +2,8 @@ require 'spec_helper' describe "posts/edit" do before(:each) do - @member = FactoryGirl.create(:member) - @post = assign(:post, FactoryGirl.create(:post, :member => @member)) + @author = FactoryGirl.create(:member) + @post = assign(:post, FactoryGirl.create(:post, :author => @author)) end context "logged out" do @@ -15,7 +15,7 @@ describe "posts/edit" do context "logged in" do before(:each) do - sign_in @member + sign_in @author render end diff --git a/spec/views/posts/index.html.haml_spec.rb b/spec/views/posts/index.html.haml_spec.rb index 349762875..f1b8fd130 100644 --- a/spec/views/posts/index.html.haml_spec.rb +++ b/spec/views/posts/index.html.haml_spec.rb @@ -2,9 +2,9 @@ require 'spec_helper' describe "posts/index" do before(:each) do - @member = FactoryGirl.create(:member) - @post1 = FactoryGirl.build(:post, :member => @member) - @post2 = FactoryGirl.build(:post, :member => @member) + @author = FactoryGirl.create(:member) + @post1 = FactoryGirl.build(:post, :author => @author) + @post2 = FactoryGirl.build(:post, :author => @author) assign(:posts, [@post1, @post2]) render end diff --git a/spec/views/posts/index.rss.builder_spec.rb b/spec/views/posts/index.rss.builder_spec.rb index cfb0c71a9..f080cdd01 100644 --- a/spec/views/posts/index.rss.builder_spec.rb +++ b/spec/views/posts/index.rss.builder_spec.rb @@ -2,10 +2,10 @@ require 'spec_helper' describe 'posts/index.rss.builder', :type => "view" do before(:each) do - @member = FactoryGirl.create(:member) + @author = FactoryGirl.create(:member) assign(:recent_posts, [ - FactoryGirl.build(:post, :id => 1, :member => @member), - FactoryGirl.build(:post, :id => 2, :member => @member) + FactoryGirl.build(:post, :id => 1, :author => @author), + FactoryGirl.build(:post, :id => 2, :author => @author) ]) render end diff --git a/spec/views/posts/new.html.haml_spec.rb b/spec/views/posts/new.html.haml_spec.rb index e788eb952..d9780a661 100644 --- a/spec/views/posts/new.html.haml_spec.rb +++ b/spec/views/posts/new.html.haml_spec.rb @@ -2,8 +2,8 @@ require 'spec_helper' describe "posts/new" do before(:each) do - @member = FactoryGirl.create(:member) - assign(:post, FactoryGirl.create(:post, :member => @member)) + @author = FactoryGirl.create(:member) + assign(:post, FactoryGirl.create(:post, :author => @author)) end context "logged out" do @@ -15,7 +15,7 @@ describe "posts/new" do context "logged in" do before(:each) do - sign_in @member + sign_in @author render end diff --git a/spec/views/posts/show.html.haml_spec.rb b/spec/views/posts/show.html.haml_spec.rb index 3fe5991c4..669a8300d 100644 --- a/spec/views/posts/show.html.haml_spec.rb +++ b/spec/views/posts/show.html.haml_spec.rb @@ -2,12 +2,12 @@ require 'spec_helper' describe "posts/show" do before(:each) do - @member = FactoryGirl.create(:member) + @author = FactoryGirl.create(:member) end it "renders the post" do @post = assign(:post, - FactoryGirl.create(:post, :member => @member)) + FactoryGirl.create(:post, :author => @author)) render # show the name of the member who posted the post rendered.should match(/member1/) @@ -20,14 +20,14 @@ describe "posts/show" do it "should parse markdown into html" do @post = assign(:post, - FactoryGirl.create(:markdown_post, :member => @member)) + FactoryGirl.create(:markdown_post, :author => @author)) render assert_select "strong", "strong" end it "shouldn't let html through in body" do @post = assign(:post, - FactoryGirl.create(:html_post, :member => @member)) + FactoryGirl.create(:html_post, :author => @author)) render rendered.should match(/EVIL/) rendered.should_not match(/a href="http:\/\/evil.com"/)