我有一個重複的代碼塊,初始化一堆不同的控制器方法中的幾個變量。有沒有辦法讓我用模型方法做這個DRY,而不是在每個控制器方法中重複相同的代碼塊?Ruby on Rails:乾燥重複的代碼塊,初始化幾個變量
基本上,這是一個社交網站,它拉起了一個用戶的朋友列表,然後根據用戶擁有的存儲在友情模型中的權限構建好友的列表。這個桶的重複初始化是我試圖做DRY的。
通常我會使用模型方法,但在這種情況下,3個單獨的變量正在基於一個數據庫拉進行初始化,並且這經常被調用,我不想通過點擊數據庫3使其不必要的低效倍。在C中,我只會使用作爲變量傳入的指針。
它是這樣的:
def example_method
friendships = @user.friendships
view_permission_friends = []
write_permission_friends = []
message_permission_friends = []
for friendship in friendships
if friendship.view_permission then view_permission_friends << friendship.friend_id end
if friendship.write_permission then write_permission_friends << friendship.friend_id end
if friendship.message_permission then message_permission_friends << friendship.friend_id end
end
#Do something with the 3 initialized arrays here
end
我想我可能不清楚我的問題,我修改了。我試圖在每個控制器方法中重複使用整個塊,而不是優化塊本身。我可以將數組建築拆分成不同的行。雖然你是對的,但如果我要從模型方法中返回一個哈希值,這將使我能夠將數組粘貼到哈希中。那是做到這一點的最佳方式嗎? – 2010-12-09 01:08:14