語法請教


#1

這星期在抓某些人放在github的參考範例

有幾個有趣的東西 感覺是個觀念上的釐清

他們有些人的前後台 一樣是用 namespace 在做路徑上的分割

跟jc大教的一樣阿~

然後呢 路徑的使用

resources :items, only: %i[show index new create]

這種用法 感覺還蠻炫的 邏輯上就是用符號變數讓他轉型使用

相關符號用法可以參考這一篇

https://ruby-china.org/topics/18512

另一個就是後台當中 會有以下的用法

  def index
    @admin_items = Admin::Item.all
  end

而對應的前端就會變成

admin_item[name] 的形式

我用rails c 觀察效果

=> #<ActiveRecord::Relation [#<Item id: 1,name: "小明">]>

=> #<ActiveRecord::Relation [#<Admin::Item id: 1,name: "小明">]>

會有這種格式上的差異

但不懂的是 為何會有需要這種使用方式
我猜測
1.當debug時 可以藉由觀察格式來知道這個sql指令是從前台發出或是後台發出 (識別用)
2.嚴謹性?
3.其他?


#2

很多東西都是語法糖而已,其實沒有好壞之分,挑選你想要的即可,但不要因為會語法糖而自滿,因為本質是一樣的東西

& 其實我是把 Rails 當 PHP 寫唄哈哈哈,用最少的東西達到我想要要的效果而已,至於手法漂不漂亮要不要學人怎樣整理,其實我不太 care 的

再來 SQL 應該都一樣唄,如果是針對同一個 DB / table,單純你可以用 obj 的 class 來判斷作用範圍之類的,很類似你在 initialize 時增加一個 attr : is_from_admin 的做法之類的而已,然後在使用時判定即可

至於其他的我可能回答不上來,請別人補充自己的觀點唄??我的觀點也只代表我自身而已 : )


#3

namespace 在 Rails 中隱含著資料夾的含意,
這跟 Rails 的 autoload 機制有關
比如說 Admin::Item Rails 怎麼知道有這個 Class 可以使用?
因為你的命名,Rails 到 models/admin 資料夾下面去查找有沒有 Item。
至於物件需不需要分資料夾,
這就跟你整個系統設計有關,
如果放在 models/admin 資料夾底下代表只有管理者可以使用的 model 才放置,
這樣會比較恰當。


#4

所以 一部分是rails本身的機制

另一部分則是手法上的使用

也是搞不清楚

在不同的使用狀況下 有不同的觀點產生

不過也算是蠻特別的一個東西
:smirk:


#5

在前後端都可以用

  admin_item = @admin_items.first
  admin_item.name # => 小明
  admin_item[:name] # => 小明
  admin_item['name'] # => 小明

來取得屬性中的值,沒有什麼差別

至於為何會有需要這種使用方式,只能說ruby是工程師的好朋友
你想怎麼用都可以,個人習慣問題