renamed Post.member_id to Post.author

This commit is contained in:
Skud
2013-01-13 20:57:28 +11:00
parent 689448f87c
commit df76f2497a
23 changed files with 54 additions and 44 deletions

View File

@@ -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|

View File

@@ -0,0 +1,2 @@
module PostsHelper
end

View File

@@ -1,2 +0,0 @@
module UpdatesHelper
end

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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, |

View File

@@ -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)

View File

@@ -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|

View File

@@ -0,0 +1,5 @@
class RenamePostMemberToAuthor < ActiveRecord::Migration
def change
rename_column :posts, :member_id, :author_id
end
end

View File

@@ -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|

View File

@@ -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

View File

@@ -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.

View File

@@ -1,6 +1,6 @@
FactoryGirl.define do
factory :member do
factory :member, aliases: [:author] do
login_name 'member1'
password 'password1'
email 'member1@example.com'

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"/)