前回の記事はこちら
ブログHeroku移転計画 その2 - 「Getting Started with Rails」をやってみた(2)
結構間が空いてしまったので、忘れてるなあ・・・。
けど、とりあえず終わらせるぞ。
■10.セキュリティ
次はセキュリティって書いてあったけど、Basic認証のかけ方。
すげー簡単。
authenticateってアクションを追加。
privateってのはメソッドの呼び出せるスコープかな。
なんか本で読んだ気がするぞ。
Postsコントローラーは参照系以外は全部認証が必要に。
Commentsコントローラーは削除だけ認証をかける。
before_filterはフックを設定するためのメソッドだろうな。
最初がメソッド名で、次が引数って感じかな?
これはコントローラー部分のヘルプを見ればわかりそうだ。
この辺もCakePHPと似ている。
っつうことで、結構簡単に実装できた。
usersコントローラ作って・・・って奴もどこかでみとないとな。
まあ、個人利用のブログにいらんけど。
■11.マルチモデルフォームの作成
次はマルチモデルフォーム?
タグ機能を追加する方法っぽいな、助かるぜ。
書かれているままデータベースの作成など。
Postsコントローラを編集。
これが全くわからないので、調べてみた。
これはモデルが親子関係の時とか、子どもも一緒に更新するか?そん時は削除も許可するか、どんな時は拒否するか?みたいな設定ができるっぽい。
んで、Viewも変更しろだと。
まずはフォーム部分。
これは単純にタグを入力する部分の追加って事なんだろうな。
んで呼び出しているパーツを生成。
もはや何が何だか。
意味はなんとなくわかるんだけどねえ。
どの変数にどんなオブジェクトが入っているかってのが、もはや追えないな。
tagsってフィールドの中にlabelとかtext_fieldとかがあるってのがまだよくわかってないな。
ま、そりゃいきなりわかったら怖いけど。
showのテンプレートにも追加
joinして表示しているなあ。
なんかmapしてjoinしているのが美しくないらしいので、ヘルパーの登場っぽい。
■12.ヘルパー
ヘルパーはモジュールでつくるんだなー。
ヘルパーを呼び出した意識はないんだけど、スコープはどうなっているんだ?
んで、とりあえず終了。
■全体的な感想
CakePHP様様って感じで、確かによく似ていると思う。
あとは細かい、裏側で何が行われているのかをちょっと把握しながらやらないと、こんがらがっちゃうなあとは思った。
あとは公式サイトの使い方覚えないと(まず英語を怖がらないようにしないと)
ブログHeroku移転計画 その2 - 「Getting Started with Rails」をやってみた(2)
結構間が空いてしまったので、忘れてるなあ・・・。
けど、とりあえず終わらせるぞ。
■10.セキュリティ
次はセキュリティって書いてあったけど、Basic認証のかけ方。
すげー簡単。
@/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
private
def authenticate
authenticate_or_request_with_http_basic do |user_name, password|
user_name == 'admin' && password == 'password'
end
end
endauthenticateってアクションを追加。
privateってのはメソッドの呼び出せるスコープかな。
なんか本で読んだ気がするぞ。
@/app/controllers/posts_controller.rb
+ before_filter :authenticate, :except => [:index, :show]Postsコントローラーは参照系以外は全部認証が必要に。
@/app/controllers/comments_controller.rb
+ before_filter :authenticate, :only => :destroyCommentsコントローラーは削除だけ認証をかける。
before_filterはフックを設定するためのメソッドだろうな。
最初がメソッド名で、次が引数って感じかな?
これはコントローラー部分のヘルプを見ればわかりそうだ。
この辺もCakePHPと似ている。
っつうことで、結構簡単に実装できた。
usersコントローラ作って・・・って奴もどこかでみとないとな。
まあ、個人利用のブログにいらんけど。
■11.マルチモデルフォームの作成
次はマルチモデルフォーム?
タグ機能を追加する方法っぽいな、助かるぜ。
書かれているままデータベースの作成など。
$ rails generate model tag name:string post:references
$ rake db:migrate@/app/controllers/posts_controller.rb
+ has_many :tags
+ accepts_nested_attributes_for :tags, :allow_destroy => :true,
+ :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }Postsコントローラを編集。
これが全くわからないので、調べてみた。
これはモデルが親子関係の時とか、子どもも一緒に更新するか?そん時は削除も許可するか、どんな時は拒否するか?みたいな設定ができるっぽい。
んで、Viewも変更しろだと。
まずはフォーム部分。
@ /app/views/posts/_form.html.erb
<%= post_form.label :content %>
<%= post_form.text_area :content %>
+ Tags
+ <%= render :partial => 'tags/form',
+ :locals => {:form => post_form} %>
<%= post_form.submit %>
これは単純にタグを入力する部分の追加って事なんだろうな。
んで呼び出しているパーツを生成。
@ /app/views/tags/_form.html.erb
<%= form.fields_for :tags do |tag_form| %>
<%= tag_form.label :name, 'Tag:' %>
<%= tag_form.text_field :name %>
<% unless tag_form.object.nil? || tag_form.object.new_record? %>
<%= tag_form.label :_destroy, 'Remove:' %>
<%= tag_form.check_box :_destroy %>
<% end %>
<% end もはや何が何だか。
意味はなんとなくわかるんだけどねえ。
どの変数にどんなオブジェクトが入っているかってのが、もはや追えないな。
tagsってフィールドの中にlabelとかtext_fieldとかがあるってのがまだよくわかってないな。
ま、そりゃいきなりわかったら怖いけど。
showのテンプレートにも追加
<%= notice %>
Content:
<%= @post.content %>
+
+ Tags:
+ <%= @post.tags.map { |t| t.name }.join(", ") %>
+
Comments
<%= render :partial => "comments/comment",
:collection => @post.comments %>joinして表示しているなあ。
なんかmapしてjoinしているのが美しくないらしいので、ヘルパーの登場っぽい。
■12.ヘルパー
@ /app/helpers/posts_helper.rb
module PostsHelper
+ def join_tags(post)
+ post.tags.map { |t| t.name }.join(", ")
+ end
endヘルパーはモジュールでつくるんだなー。
@ /app/view/posts_helper.rb
Tags:
- <%= @post.tags.map { |t| t.name }.join(", ") %>
+ <%= join_tags(@post) %>
ヘルパーを呼び出した意識はないんだけど、スコープはどうなっているんだ?
んで、とりあえず終了。
■全体的な感想
CakePHP様様って感じで、確かによく似ていると思う。
あとは細かい、裏側で何が行われているのかをちょっと把握しながらやらないと、こんがらがっちゃうなあとは思った。
あとは公式サイトの使い方覚えないと(まず英語を怖がらないようにしないと)