enju_news 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +47 -0
  4. data/app/controllers/news_feeds_controller.rb +101 -0
  5. data/app/controllers/news_posts_controller.rb +98 -0
  6. data/app/helpers/news_feeds_helper.rb +2 -0
  7. data/app/helpers/news_posts_helper.rb +2 -0
  8. data/app/models/news_feed.rb +83 -0
  9. data/app/models/news_feed_sweeper.rb +12 -0
  10. data/app/models/news_post.rb +15 -0
  11. data/app/views/news_feeds/_content.html.erb +9 -0
  12. data/app/views/news_feeds/_content_atom.html.erb +16 -0
  13. data/app/views/news_feeds/_content_rss.html.erb +16 -0
  14. data/app/views/news_feeds/_form.html.erb +14 -0
  15. data/app/views/news_feeds/_list.html.erb +7 -0
  16. data/app/views/news_feeds/edit.html.erb +29 -0
  17. data/app/views/news_feeds/index.html.erb +42 -0
  18. data/app/views/news_feeds/new.html.erb +28 -0
  19. data/app/views/news_feeds/show.html.erb +34 -0
  20. data/app/views/news_posts/_form.html.erb +44 -0
  21. data/app/views/news_posts/edit.html.erb +13 -0
  22. data/app/views/news_posts/index.atom.builder +11 -0
  23. data/app/views/news_posts/index.html.erb +42 -0
  24. data/app/views/news_posts/index.rss.builder +32 -0
  25. data/app/views/news_posts/new.html.erb +12 -0
  26. data/app/views/news_posts/show.html.erb +49 -0
  27. data/config/locales/translation_en.yml +28 -0
  28. data/config/locales/translation_ja.yml +28 -0
  29. data/config/routes.rb +4 -0
  30. data/db/migrate/20081031033632_create_news_feeds.rb +13 -0
  31. data/db/migrate/20090126071155_create_news_posts.rb +18 -0
  32. data/db/migrate/20110220103937_add_url_to_news_post.rb +9 -0
  33. data/lib/enju_news.rb +6 -0
  34. data/lib/enju_news/engine.rb +12 -0
  35. data/lib/enju_news/expire_editable_fragment.rb +15 -0
  36. data/lib/enju_news/version.rb +3 -0
  37. data/lib/tasks/enju_news_tasks.rake +4 -0
  38. data/spec/cassette_library/NewsFeed.yml +1998 -0
  39. data/spec/controllers/news_feeds_controller_spec.rb +445 -0
  40. data/spec/controllers/news_posts_controller_spec.rb +443 -0
  41. data/spec/dummy/Rakefile +7 -0
  42. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  43. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  44. data/spec/dummy/app/controllers/application_controller.rb +52 -0
  45. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  46. data/spec/dummy/app/models/ability.rb +22 -0
  47. data/spec/dummy/app/models/library_group.rb +86 -0
  48. data/spec/dummy/app/models/role.rb +46 -0
  49. data/spec/dummy/app/models/user.rb +94 -0
  50. data/spec/dummy/app/models/user_group.rb +40 -0
  51. data/spec/dummy/app/models/user_has_role.rb +5 -0
  52. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  53. data/spec/dummy/app/views/page/403.html.erb +9 -0
  54. data/spec/dummy/app/views/page/403.mobile.erb +5 -0
  55. data/spec/dummy/app/views/page/403.xml.erb +4 -0
  56. data/spec/dummy/app/views/page/404.html.erb +9 -0
  57. data/spec/dummy/app/views/page/404.mobile.erb +5 -0
  58. data/spec/dummy/app/views/page/404.xml.erb +4 -0
  59. data/spec/dummy/config.ru +4 -0
  60. data/spec/dummy/config/application.rb +47 -0
  61. data/spec/dummy/config/boot.rb +10 -0
  62. data/spec/dummy/config/database.yml +25 -0
  63. data/spec/dummy/config/environment.rb +5 -0
  64. data/spec/dummy/config/environments/development.rb +30 -0
  65. data/spec/dummy/config/environments/production.rb +60 -0
  66. data/spec/dummy/config/environments/test.rb +39 -0
  67. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  68. data/spec/dummy/config/initializers/devise.rb +205 -0
  69. data/spec/dummy/config/initializers/inflections.rb +10 -0
  70. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  71. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  72. data/spec/dummy/config/initializers/session_store.rb +8 -0
  73. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  74. data/spec/dummy/config/locales/en.yml +5 -0
  75. data/spec/dummy/config/routes.rb +60 -0
  76. data/spec/dummy/db/migrate/077_create_user_groups.rb +16 -0
  77. data/spec/dummy/db/migrate/080_create_library_groups.rb +20 -0
  78. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  79. data/spec/dummy/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +13 -0
  80. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  81. data/spec/dummy/db/migrate/20111201155456_create_users.rb +16 -0
  82. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +44 -0
  83. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  84. data/spec/dummy/db/schema.rb +116 -0
  85. data/spec/dummy/db/test.sqlite3 +0 -0
  86. data/spec/dummy/lib/master_model.rb +19 -0
  87. data/spec/dummy/lib/url_validator.rb +10 -0
  88. data/spec/dummy/public/404.html +26 -0
  89. data/spec/dummy/public/422.html +26 -0
  90. data/spec/dummy/public/500.html +26 -0
  91. data/spec/dummy/public/favicon.ico +0 -0
  92. data/spec/dummy/script/rails +6 -0
  93. data/spec/factories/news_feed.rb +6 -0
  94. data/spec/factories/news_post.rb +7 -0
  95. data/spec/factories/user.rb +37 -0
  96. data/spec/fixtures/library_groups.yml +33 -0
  97. data/spec/fixtures/news_feeds.yml +11 -0
  98. data/spec/fixtures/news_posts.yml +13 -0
  99. data/spec/fixtures/roles.yml +21 -0
  100. data/spec/fixtures/user_has_roles.yml +41 -0
  101. data/spec/fixtures/users.yml +93 -0
  102. data/spec/models/news_feed_spec.rb +31 -0
  103. data/spec/models/news_post_spec.rb +5 -0
  104. data/spec/spec_helper.rb +42 -0
  105. data/spec/support/controller_macros.rb +46 -0
  106. data/spec/support/devise.rb +4 -0
  107. data/spec/support/vcr.rb +9 -0
  108. metadata +430 -0
@@ -0,0 +1,7 @@
1
+ <%- if @news_feeds -%>
2
+ <%- @news_feeds.each do |news_feed| -%>
3
+ <%= render :partial => 'news_feeds/content', :locals => {:news_feed => news_feed} -%>
4
+ <%- end -%>
5
+ <%- else -%>
6
+ <p><%= t('news_feed.failed_to_fetch_feed') -%></p>
7
+ <%- end -%>
@@ -0,0 +1,29 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.editing', :model => t('activerecord.models.news_feed')) -%></h1>
3
+ <div id="content_list">
4
+
5
+ <%= form_for(@news_feed) do |f| -%>
6
+ <%= f.error_messages -%>
7
+
8
+ <p>
9
+ <%= f.label t('activerecord.attributes.news_feed.title') -%><br />
10
+ <%= f.text_field :title, :class => 'resource_class' -%>
11
+ </p>
12
+ <p>
13
+ <%= f.label t('activerecord.attributes.news_feed.url') -%><br />
14
+ <%= f.text_field :url, :class => 'resource_url' -%>
15
+ </p>
16
+ <p>
17
+ <%= f.submit t('page.update') -%>
18
+ </p>
19
+ <%- end -%>
20
+
21
+ </div>
22
+ </div>
23
+
24
+ <div id="submenu" class="ui-corner-all">
25
+ <ul>
26
+ <li><%= link_to t('page.show'), @news_feed -%></li>
27
+ <li><%= link_to t('page.back'), news_feeds_path -%></li>
28
+ </ul>
29
+ </div>
@@ -0,0 +1,42 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.listing', :model => t('activerecord.models.news_feed')) -%></h1>
3
+ <div id="content_list">
4
+
5
+ <table class="index">
6
+ <tr>
7
+ <th id="position"></th>
8
+ <th><%= t('activerecord.attributes.news_feed.title') -%></th>
9
+ <th><%= t('activerecord.attributes.news_feed.url') -%></th>
10
+ <th></th>
11
+ </tr>
12
+
13
+ <%- @news_feeds.each do |news_feed| -%>
14
+ <tr class="line<%= cycle("0", "1") -%>">
15
+ <td>
16
+ <%- if can? :destroy, news_feed -%>
17
+ <%= move_position(news_feed) -%>
18
+ <%- end -%>
19
+ </td>
20
+ <td><%= link_to h(news_feed.title), news_feed -%></td>
21
+ <td><%= link_to h(news_feed.url), news_feed.url -%></td>
22
+ <td>
23
+ <%- if can? :destroy, news_feed -%>
24
+ <%= link_to t('page.edit'), edit_news_feed_path(news_feed) -%>
25
+ <%= link_to t('page.destroy'), news_feed, :confirm => t('page.are_you_sure'), :method => :delete -%>
26
+ <%- end -%>
27
+ </td>
28
+ </tr>
29
+ <%- end -%>
30
+ </table>
31
+
32
+ <%= will_paginate(@news_feeds) -%>
33
+
34
+ </div>
35
+ </div>
36
+
37
+ <div id="submenu" class="ui-corner-all">
38
+ <ul>
39
+ <li><%= link_to t('page.new', :model => t('activerecord.models.news_feed')), new_news_feed_path -%></li>
40
+ <li><%= link_to t('page.clear_cache'), news_feeds_path(:mode => 'clear_cache') -%></li>
41
+ </ul>
42
+ </div>
@@ -0,0 +1,28 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.new', :model => t('activerecord.models.news_feed')) -%></h1>
3
+ <div id="content_list">
4
+
5
+ <%= form_for(@news_feed) do |f| -%>
6
+ <%= f.error_messages -%>
7
+
8
+ <p>
9
+ <%= f.label t('activerecord.attributes.news_feed.title') -%><br />
10
+ <%= f.text_field :title, :class => 'resource_title' -%>
11
+ </p>
12
+ <p>
13
+ <%= f.label t('activerecord.attributes.news_feed.url') -%><br />
14
+ <%= f.text_field :url, :class => 'resource_url' -%>
15
+ </p>
16
+ <p>
17
+ <%= f.submit t('page.create') -%>
18
+ </p>
19
+ <%- end -%>
20
+
21
+ </div>
22
+ </div>
23
+
24
+ <div id="submenu" class="ui-corner-all">
25
+ <ul>
26
+ <li><%= link_to t('page.back'), news_feeds_path -%></li>
27
+ </ul>
28
+ </div>
@@ -0,0 +1,34 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.showing', :model => t('activerecord.models.news_feed')) -%></h1>
3
+ <div id="content_list">
4
+ <p>
5
+ <strong><%= t('activerecord.attributes.news_feed.title') -%>:</strong>
6
+ <%= @news_feed.title -%>
7
+ </p>
8
+
9
+ <p>
10
+ <strong><%= t('activerecord.attributes.news_feed.url') -%>:</strong>
11
+ <%= link_to h(@news_feed.url), @news_feed.url -%>
12
+ </p>
13
+
14
+ <div id="news_feed_box">
15
+ <%= render :partial => 'news_feeds/content', :locals => {:news_feed => @news_feed} -%>
16
+ </div>
17
+
18
+ <%= form_for(@news_feed, :url => news_feed_url(@news_feed, :mode => 'force_reload')) do |f| -%>
19
+ <%= f.error_messages -%>
20
+
21
+ <p>
22
+ <%= f.submit t('page.force_reload') -%>
23
+ </p>
24
+ <%- end -%>
25
+
26
+ </div>
27
+ </div>
28
+
29
+ <div id="submenu" class="ui-corner-all">
30
+ <ul>
31
+ <li><%= link_to t('page.edit'), edit_news_feed_path(@news_feed) -%></li>
32
+ <li><%= link_to t('page.back'), news_feeds_path -%></li>
33
+ </ul>
34
+ </div>
@@ -0,0 +1,44 @@
1
+ <%= form_for(@news_post) do |f| -%>
2
+ <%= f.error_messages -%>
3
+ <div class="field">
4
+ <%= f.label t('activerecord.attributes.news_post.title') -%><br />
5
+ <%= f.text_field :title, :class => 'resource_title' -%>
6
+ </div>
7
+ <div class="field">
8
+ <%= f.label t('activerecord.attributes.news_post.body') -%><br />
9
+ <%= f.text_area :body, :class => 'resource_textarea' -%>
10
+ </div>
11
+ <div class="field">
12
+ <%= f.label t('activerecord.attributes.news_post.url') -%>
13
+ <%= f.url_field :url, :class => 'resource_url' -%>
14
+ </div>
15
+ <!--
16
+ <div class="field">
17
+ <%= f.label t('activerecord.models.user') -%><br />
18
+ <%= link_to h(@news_post.user.username), user_path(@news_post.user.username) -%>
19
+ </div>
20
+ <div class="field">
21
+ <%= f.label t('role.required_role') -%>
22
+ <%= f.select(:required_role_id, @roles.collect{|r| [r.display_name.localize, r.id]}) -%>
23
+ </div>
24
+ -->
25
+ <div class="field">
26
+ <%= f.label t('activerecord.attributes.news_post.start_date') -%>
27
+ <%= f.date_select :start_date -%>
28
+ </div>
29
+ <div class="field">
30
+ <%= f.label t('activerecord.attributes.news_post.end_date') -%><br />
31
+ <%= f.datetime_select :end_date -%>
32
+ </div>
33
+ <div class="field">
34
+ <%= f.label t('activerecord.attributes.news_post.note') -%><br />
35
+ <%= f.text_area :note, :class => 'resource_textarea' -%>
36
+ </div>
37
+ <div class="field">
38
+ <%= f.label t('activerecord.attributes.news_post.draft') -%>
39
+ <%= f.check_box :draft -%>
40
+ </div>
41
+ <div class="actions">
42
+ <%= f.submit %>
43
+ </div>
44
+ <%- end -%>
@@ -0,0 +1,13 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.editing', :model => t('activerecord.models.news_post')) -%></h1>
3
+ <div id="content_list">
4
+ <%= render 'form' %>
5
+ </div>
6
+ </div>
7
+
8
+ <div id="submenu" class="ui-corner-all">
9
+ <ul>
10
+ <li><%= link_to t('page.show'), @news_post -%></li>
11
+ <li><%= link_to t('page.back'), news_posts_path -%></li>
12
+ </ul>
13
+ </div>
@@ -0,0 +1,11 @@
1
+ atom_feed(:url => news_posts_url(:format => :atom)) do |feed|
2
+ feed.title t('news_post.library_group_news_post', :library_group_name => @library_group.display_name.localize)
3
+ feed.updated(@news_posts.first ? @news_posts.first.created_at : Time.zone.now)
4
+
5
+ @news_posts.each do |news_post|
6
+ feed.entry(news_post) do |entry|
7
+ entry.title(news_post.title)
8
+ entry.author(news_post.user.username)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,42 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.listing', :model => t('activerecord.models.news_post')) -%></h1>
3
+ <div id="content_list">
4
+
5
+ <table class="index">
6
+ <tr>
7
+ <th><%= t('activerecord.attributes.news_post.title') -%></th>
8
+ <th><%= t('activerecord.models.user') -%></th>
9
+ <th><%= t('page.date') -%></th>
10
+ <th><%= t('role.required_role') -%></th>
11
+ <th></th>
12
+ </tr>
13
+
14
+ <%- @news_posts.each do |news_post| -%>
15
+ <tr class="line<%= cycle("0", "1") -%>">
16
+ <td><%= link_to h(news_post.title), news_post -%></td>
17
+ <td><%= link_to h(news_post.user.username), user_path(news_post.user.username) -%></td>
18
+ <td>
19
+ <%= l(news_post.start_date) -%>
20
+ -
21
+ <%= l(news_post.end_date) -%>
22
+ </td>
23
+ <td><%= news_post.required_role.display_name.localize -%></td>
24
+ <td>
25
+ <% if can? :destroy, news_post %>
26
+ <%= link_to t('page.edit'), edit_news_post_path(news_post) -%>
27
+ <%= link_to t('page.destroy'), news_post, :confirm => t('page.are_you_sure'), :method => :delete -%>
28
+ <% end %>
29
+ </td>
30
+ </tr>
31
+ <%- end -%>
32
+ </table>
33
+
34
+ <%= will_paginate(@news_posts) -%>
35
+ </div>
36
+ </div>
37
+
38
+ <div id="submenu" class="ui-corner-all">
39
+ <ul>
40
+ <li><%= link_to t('page.new', :model => t('activerecord.models.news_post')), new_news_post_path -%></li>
41
+ </ul>
42
+ </div>
@@ -0,0 +1,32 @@
1
+ xml.instruct! :xml, :version=>"1.0"
2
+ xml.rss('version' => "2.0",
3
+ 'xmlns:opensearch' => "http://a9.com/-/spec/opensearch/1.1/",
4
+ 'xmlns:dc' => "http://purl.org/dc/elements/1.1/",
5
+ 'xmlns:atom' => "http://www.w3.org/2005/Atom"){
6
+ xml.channel{
7
+ xml.title t('news_post.library_group_news_post', :library_group_name => @library_group.display_name.localize)
8
+ xml.link news_posts_url
9
+ xml.description "Next-L Enju, an open source integrated library system developed by Project Next-L"
10
+ xml.language @locale.to_s
11
+ xml.ttl "60"
12
+ xml.tag! "atom:link", :rel => 'self', :href => news_posts_url(:format => :rss)
13
+ xml.tag! "atom:link", :rel => 'alternate', :href => root_url
14
+ xml.tag! "atom:link", :rel => 'search', :type => 'application/opensearchdescription+xml', :href => page_opensearch_url
15
+ unless params[:query].blank?
16
+ xml.tag! "opensearch:startIndex", @news_posts.offset + 1
17
+ xml.tag! "opensearch:itemsPerPage", @news_posts.per_page
18
+ end
19
+ if @news_posts
20
+ @news_posts.each do |news_post|
21
+ xml.item do
22
+ xml.title(news_post.title)
23
+ xml.description(news_post.body)
24
+ # rfc822
25
+ xml.pubDate h(news_post.created_at.utc.iso8601)
26
+ xml.link news_post_url(news_post)
27
+ xml.guid news_post_url(news_post), :isPermaLink => "true"
28
+ end
29
+ end
30
+ end
31
+ }
32
+ }
@@ -0,0 +1,12 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.new', :model => t('activerecord.models.news_post')) -%></h1>
3
+ <div id="content_list">
4
+ <%= render 'form' %>
5
+ </div>
6
+ </div>
7
+
8
+ <div id="submenu" class="ui-corner-all">
9
+ <ul>
10
+ <li><%= link_to t('page.back'), news_posts_path -%></li>
11
+ </ul>
12
+ </div>
@@ -0,0 +1,49 @@
1
+ <div id="content_detail" class="ui-corner-all">
2
+ <h1 class="title"><%= t('page.showing', :model => t('activerecord.models.news_post')) -%></h1>
3
+ <div id="content_list">
4
+ <p>
5
+ <strong><%= t('activerecord.attributes.news_post.title') -%>:</strong>
6
+ <%= @news_post.title -%>
7
+ </p>
8
+
9
+ <p>
10
+ <strong><%= t('activerecord.attributes.news_post.body') -%>:</strong>
11
+ <%= raw auto_link(simple_format(h(@news_post.body))) -%>
12
+ </p>
13
+
14
+ <p>
15
+ <strong><%= t('activerecord.models.user') -%>:</strong>
16
+ <%= link_to h(@news_post.user.username), user_path(@news_post.user.username) -%>
17
+ </p>
18
+
19
+ <!--
20
+ <p>
21
+ <strong><%= t('role.required_role') -%>:</strong>
22
+ <%= @news_post.required_role.display_name.localize -%>
23
+ </p>
24
+ -->
25
+
26
+ <p>
27
+ <strong><%= t('activerecord.attributes.news_post.start_date') -%>:</strong>
28
+ <%= l(@news_post.start_date) -%>
29
+ </p>
30
+
31
+ <p>
32
+ <strong><%= t('activerecord.attributes.news_post.end_date') -%>:</strong>
33
+ <%= l(@news_post.end_date) -%>
34
+ </p>
35
+
36
+ <p>
37
+ <strong><%= t('activerecord.attributes.news_post.note') -%>:</strong>
38
+ <%= @news_post.note -%>
39
+ </p>
40
+
41
+ </div>
42
+ </div>
43
+
44
+ <div id="submenu" class="ui-corner-all">
45
+ <ul>
46
+ <li><%= link_to t('page.edit'), edit_news_post_path(@news_post) -%></li>
47
+ <li><%= link_to t('page.back'), news_posts_path -%></li>
48
+ </ul>
49
+ </div>
@@ -0,0 +1,28 @@
1
+ en:
2
+ activerecord:
3
+ models:
4
+ news_feed: News feed
5
+ news_post: News post
6
+ attributes:
7
+ news_feed:
8
+ title: Title
9
+ url: URL
10
+ body: Body
11
+ note: Note
12
+ position: Position
13
+ news_post:
14
+ title: Title
15
+ body: Body
16
+ note: Note
17
+ position: Position
18
+ start_date: Start date
19
+ end_date: End date
20
+ url: URL
21
+ draft: Draft
22
+
23
+ page:
24
+ news: "News"
25
+ news_post:
26
+ library_group_news_post: "News from %{library_group_name}"
27
+ news_feed:
28
+ failed_to_fetch_feed: Failed to fetch feeds.
@@ -0,0 +1,28 @@
1
+ ja:
2
+ activerecord:
3
+ models:
4
+ news_feed: お知らせのフィード
5
+ news_post: 図書館からのお知らせ
6
+ attributes:
7
+ news_feed:
8
+ title: タイトル
9
+ url: URL
10
+ body: 本文
11
+ note: 注記
12
+ position: 位置
13
+ news_post:
14
+ title: タイトル
15
+ body: 本文
16
+ note: 注記
17
+ position: 位置
18
+ start_date: 開始日
19
+ end_date: 終了日
20
+ url: URL
21
+ draft: 下書き
22
+
23
+ page:
24
+ news: "お知らせ"
25
+ news_post:
26
+ library_group_news_post: "%{library_group_name} からのお知らせ"
27
+ news_feed:
28
+ failed_to_fetch_feed: フィードの読み込みに失敗しました。
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+ resources :news_posts
3
+ resources :news_feeds
4
+ end
@@ -0,0 +1,13 @@
1
+ class CreateNewsFeeds < ActiveRecord::Migration
2
+ def change
3
+ create_table :news_feeds do |t|
4
+ t.integer :library_group_id, :default => 1, :null => false
5
+ t.string :title
6
+ t.string :url
7
+ t.text :body
8
+ t.integer :position
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ class CreateNewsPosts < ActiveRecord::Migration
2
+ def change
3
+ create_table :news_posts do |t|
4
+ t.text :title
5
+ t.text :body
6
+ t.integer :user_id
7
+ t.datetime :start_date
8
+ t.datetime :end_date
9
+ t.integer :required_role_id, :default => 1, :null => false
10
+ t.text :note
11
+ t.integer :position
12
+ t.boolean :draft, :default => false, :null => false
13
+
14
+ t.timestamps
15
+ end
16
+ add_index :news_posts, :user_id
17
+ end
18
+ end