ラベル Ruby の投稿を表示しています。 すべての投稿を表示
ラベル Ruby の投稿を表示しています。 すべての投稿を表示

2012/12/03

[Rails] 便利なメソッド

・try()

nilでないときだけメソッドを実行

<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>


・_was

<attr>_was <attr>の変更前の値。変更されてなかったら元の値。

<% if user.updated_at_was.present? %>
 <%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
<% end %>

2012/10/24

[Ruby][Rails3] クラスのインスタンスメソッドとスタティックメソッド

rubyでは スタティックなメソッドを クラスメソッドと呼ぶそうだ

参考)
クラスのメソッド - satake7’s memo http://d.hatena.ne.jp/satake7/20090124/p1


その他、参考になりそうなもの)
class_attribute:
class_inheritable_accessorからclass_attributeに移行する際の注意点 - odeの開発メモ日記 http://d.hatena.ne.jp/ode/20110928/1317188311

2012/09/12

[Ruby] 差集合:配列Aから配列Bを取り除く

配列A・・・default_lang から
配列B・・・select_lang を取り除いて、差集合を求める

default_lang = ["ja_JP", "en_US", "zh_CN"]
select_lang = ["ja_JP"]

unselect_lang = default_lang - select_lang  #=>["en_US", "zh_CN"]

2012/05/10

/usr/bin/env について


shcshperlruby などのスクリプトでは、先頭行(「!#」で始まる行)でスクリプトインタープリタへのパスを宣言しています。 このパスがちゃんと通っていればスクリプトが動く。
 →「#!」のことを「シェバング」(shebang) と呼ぶ。また、この行全体を「シェバング行」と呼ぶ。
先日Apache再起動した際、Hiki(ruby)が500エラーで起動しないことがあって、Apacheエラーログを調べたら hiki.cgiアクセスした際「Rubyがみつからないょ」的なエラーメッセージが残ってた。
hiki.cgiを開いてみると、シェバング行で以下のように記述されていた。
#!/usr/bin/env ruby
・・・なんだこのパス指定は。
始めてみる指定なので「/usr/bin/env」でぐぐったら、結構ヒット。
感覚的に批判のページのほうが多いかな?
ワシもこの指定でのメリットが感じられないので、従来どおりのパス指定で完了。
#!/usr/local/bin/ruby

2012/04/12

DBから取ってきた ARオブジェクトを 必要な数だけ切り出す

  • 環境:Rails3
いわゆる、あれです
PHPで言うarray_sliceですよ

    users= User.find(:all, :conditions=>[" ~省略
    
    #全体の件数
    puts('count [' + users.size.to_s + ']')
    #先頭から 3つ切り出す
    puts(users.slice(0..2).to_yaml)




2012/04/10

コードの中に日本語を書くとエラーになるときの おまじない


  • 環境:Rails3

コードの中に日本語・・・
まあたとえば、

a = 'こんにちは'

↑的な?(試してないけど)

とにかく エラーが出ないためのおまじない



# encoding: utf-8

もしくは

# -*- coding: utf-8 -*-




を、ファイル頭に書く


参考)
Rails3 事始め: [Rails3] コードに日本語を書くとエラーになる件 - http://rails3try.blogspot.jp/2011/12/rails3_26.html


2012/04/07

ActiveRecordオブジェクトを そのままハッシュに入れたい時

 ActiveRecord(AR)オブジェクトは
各オブジェクトごとの値を attributes っていうHashで保持しているらしい

  user = User.find_by_user_id(params[:user_id])
  logger.debug(user.to_yaml)#←中身デバッグ

・DEBUGは↓こんな感じ
[DEBUG] --- !ruby/object:User
attributes:
  id: '1'
  name: username
  deleted_at: !!null 
  created_at: '2012-04-07 03:32:09'
  updated_at: '2012-04-07 13:41:55'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false


attributesは
1件しかないARオブジェクトだったら
→ user.attributes

複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes

2012/03/31

Hashから QueryStringを作る-Ruby

    sort_params = params.sort_by{|key,val| key}

    query_string_params = (sort_params||{}).map{|k,v|
      URI.encode(k.to_s) + "=" + URI.encode(v.to_s)
    }.join("&")

    p (query_string_params .to_s)

結果:password=password&account=username


Hashをキーでソート(昇順)-Ruby

params = { "password"=>password, "account"=>username }
sort_params = params.sort_by{|key,val| key}
p (sort_params.to_s)

結果: { "account"=>username, "password"=>password }